Zmusza ssh do monitowania użytkownika

11

Gdy uruchomisz ssh bez argumentu nazwa_logowania, automatycznie użyje on lokalnej nazwy użytkownika jako nazwy_logowania. na przykład:

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

Czy istnieje sposób, aby zmusić ssh do zapytania o login_name?


źródło

Odpowiedzi:

10

Jeśli mówisz o OpenSSH, odpowiedź brzmi nie (możesz sprawdzić źródło ). Jak wskazał @cnicutar, możesz używać ssh user@hostlub konfigurować aliasy w .ssh/configlinii

Host meh
  HostName foo
  User bar

i potem ssh meh.

themel
źródło
Oto odpowiedź, której szukałem. Używam ssh w skrypcie, więc mogę po prostu zapytać użytkownika o jego nazwę przed wykonaniem połączenia, chciałem tylko sprawdzić, czy istnieje sposób, w jaki mógłbym ssh uratować mi pracę.
4

Ponieważ sshnie ma opcji wymuszania pytania o nazwę użytkownika; możesz utworzyć następujący skrypt w swoim ~/binkatalogu i nazwać go 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]");
    }
}

Następnie spraw, aby skrypt był wykonywalny:

chmod 755 ~/bin/ssh

Upewnij się, że masz $HOME/binw swoim PATH(wstaw export PATH=$HOME/bin:$PATHw swoim ~/.bashrclub /etc/bashrci source ~/.bashrclub source /etc/bashrc).

Następnie uruchom go w następujący sposób ssh:

[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$
chown
źródło
0

Nie sądzę - gdyby tak było, byłoby to możliwe dzięki .sshconfig

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

Możesz spróbować ustawić użytkownika na coś nielegalnego, aby zobaczyć, co robi.

Lou Franco
źródło
Właśnie próbowałem tego dla zabawy: [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostfaktycznie działa ..: /dev/null@somehost's password: -> Permission denied, please try again.. Oczywiście u gospodarzy /var/log/securepokazuje sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's namei sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
Chown
0

To jest adaptacja odpowiedzi @ meh.

W skrypcie powłoki pytamy o nazwę użytkownika.

Nazwę użytkownika przekazujemy w kolejnym wywołaniu ssh.

Następujące działa uptimena contosso.com:

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

Oto przykładowy wynik:

$ ./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
źródło
-1

Miałem więc ten sam problem. Używałem cmd

ssh "IP address"

ssh 000.000.000.0

I natychmiast pytał o hasło dla użytkownika, który nie istniał (nazwa moich komputerów).

naprawdę prosta poprawka, po prostu użyj tego polecenia:

ssh root@"IP address"

ssh [email protected]

Możesz zastąpić root dowolną nazwą użytkownika. Spowoduje to, że serwer wyświetli monit o podanie hasła do żądanej nazwy użytkownika.

kennedy484
źródło
To tak naprawdę nie odpowiada na pytanie. Oprócz metody, którą sugerujesz, została już zasugerowana w innej odpowiedzi cztery lata temu.
kasperd