Erzwinge, dass ssh zur Eingabe des Benutzers auffordert

11

Wenn Sie ssh ohne das Argument login_name ausführen, wird automatisch Ihr lokaler Benutzername als login_name verwendet. beispielsweise:

cogan@localhost$ ssh myserver
cogan@myserver's password: 

Gibt es eine Möglichkeit, ssh zu zwingen, nach dem Anmeldenamen zu fragen?


quelle

Antworten:

10

Wenn Sie über OpenSSH sprechen, lautet die Antwort nein (Sie können die Quelle überprüfen ). Wie von @cnicutar hervorgehoben, können Sie ssh user@hostAliase .ssh/confignach dem Vorbild von verwenden oder konfigurieren

Host meh
  HostName foo
  User bar

und dann ssh meh.

themel
quelle
Dies ist die Antwort, nach der ich gesucht habe. Ich verwende ssh in einem Skript, damit ich den Benutzer vor dem Anruf selbst nach seinem Namen fragen kann. Ich wollte nur sehen, ob es eine Möglichkeit gibt, mit ssh mir die Arbeit zu ersparen.
4

Da sshhat keine Option zum Erzwingen einer Benutzernamen-Eingabeaufforderung; Sie können das folgende Skript in Ihrem ~/binVerzeichnis erstellen und benennen ssh:

#!/usr/bin/perl

my $user_at_address = $ARGV[0];
my @u_a = split(/@/, $user_at_address);

if (defined $u_a[1])
{
    if ( $^O == 'linux' )
    {
        exec ("/usr/bin/ssh $u_a[0]\@$u_a[1]");
    }
    if ( $^O == 'solaris' )
    {
        exec ("/usr/local/bin/ssh $u_a[0]\@$u_a[1]");
    }
}
else
{
    print "Enter your username: ";
    my $username = <STDIN>;
    chomp ( $username );
    if ( $^O == 'linux' )
    {
        exec ("/usr/bin/ssh $username\@$u_a[0]");
    }
    if ( $^O == 'solaris' )
    {
        exec ("/usr/local/bin/ssh $username\@$u_a[0]");
    }
}

Machen Sie das Skript dann ausführbar:

chmod 755 ~/bin/ssh

Stellen Sie sicher, dass Sie $HOME/binin Ihrem PATH(setzen Sie export PATH=$HOME/bin:$PATHIhr ~/.bashrcoder /etc/bashrcund source ~/.bashrcoder source /etc/bashrc).

Führen Sie es dann wie folgt aus ssh:

[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$
chown
quelle
0

Ich glaube nicht - wenn es so wäre, wäre es durch .sshconfig

http://linux.die.net/man/5/ssh_config

Sie können versuchen, den Benutzer auf etwas Illegales zu setzen, um zu sehen, was er tut.

Lou Franco
quelle
Ich habe es nur zum Spaß versucht: [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostfunktioniert tatsächlich ..: /dev/null@somehost's password: -> Permission denied, please try again.. Natürlich /var/log/securezeigt es in den Gastgebern sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's nameund sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
Chown
0

Dies ist eine Anpassung der Antwort von @ meh.

In einem Shell-Skript geben wir den Benutzernamen an.

Wir übergeben den Benutzernamen in einem nachfolgenden Aufruf an ssh.

Folgendes läuft uptimeweiter contosso.com:

sshhost=contosso.com
read -p "$sshhost user [$USER]: " sshuser
[ "$sshuser" == "" ] && sshuser=$USER
ssh $sshuser@$sshhost uptime

Hier ist eine Beispielausgabe:

$ ./run-script.sh 
contosso.com user [stephen]: billgates
billgates@contosso.com password:
 10:57:12 up 71 days,  1:01,  2 users,  load average: 0.00, 0.04, 0.05
$
Stephen Quan
quelle
-1

Ich hatte also das gleiche Problem. Ich habe cmd verwendet

ssh "IP address"

ssh 000.000.000.0

Und es wurde sofort nach dem Passwort für einen Benutzer gefragt, der nicht existierte (Name des Computers).

Verwenden Sie stattdessen einfach diesen Befehl:

ssh root@"IP address"

ssh [email protected]

Sie können root durch einen beliebigen Benutzernamen ersetzen. Dadurch werden Sie vom Server aufgefordert, das Kennwort für den gewünschten Benutzernamen einzugeben.

kennedy484
quelle
Dies beantwortet die Frage nicht wirklich. Außerdem wurde die von Ihnen vorgeschlagene Methode bereits vor vier Jahren in einer anderen Antwort vorgeschlagen.
Kasperd