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?

ssh 

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.


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 ]$

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.


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
$

-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 root@000.000.000.0

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


Dies beantwortet die Frage nicht wirklich. Außerdem wurde die von Ihnen vorgeschlagene Methode bereits vor vier Jahren in einer anderen Antwort vorgeschlagen.
Kasperd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.