Заставить ssh запросить у пользователя

11

Когда вы запускаете ssh без аргумента login_name, он автоматически использует ваше локальное имя пользователя в качестве имени login_name. например:

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

Есть ли способ заставить ssh запросить логин?


источник

Ответы:

10

Если вы говорите об OpenSSH, ответ - нет (вы можете проверить источник ). Как указывает @cnicutar, вы можете использовать ssh user@hostили настраивать псевдонимы в .ssh/configсоответствии с

Host meh
  HostName foo
  User bar

а потом ssh meh.

themel
источник
Это ответ, который я искал. Я использую ssh в скрипте, поэтому я могу просто запросить у пользователя его имя, прежде чем сделать вызов, я просто хотел посмотреть, есть ли способ, которым ssh мог бы спасти меня от работы.
4

Так sshкак не имеет опции для принудительного ввода имени пользователя; Вы можете создать следующий скрипт в вашем ~/binкаталоге и назвать его 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]");
    }
}

Затем сделайте скрипт исполняемым:

chmod 755 ~/bin/ssh

Убедитесь, что $HOME/binв вашем PATH(положить export PATH=$HOME/bin:$PATHв вашем ~/.bashrcили /etc/bashrcи source ~/.bashrcили source /etc/bashrc).

Затем запустите его так, как вы бы ssh:

[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$
Чаун
источник
0

Я так не думаю - если бы это было, это было бы через .sshconfig

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

Вы можете попробовать настроить User на что-то незаконное, чтобы посмотреть, что он делает.

Лу Франко
источник
Я просто попробовал это в шутку: на [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostсамом деле работает ..: /dev/null@somehost's password: -> Permission denied, please try again.. Конечно, в хостах /var/log/secureэто показывает sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's nameи sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
Chown
0

Это адаптация ответа @ meh.

В сценарии оболочки мы запрашиваем имя пользователя.

Мы передаем имя пользователя при последующем обращении к ssh.

Следующие работает uptimeна contosso.com:

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

Вот пример вывода:

$ ./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

У меня была такая же проблема. Я использовал cmd

ssh "IP address"

ssh 000.000.000.0

И он сразу же запрашивал пароль для пользователя, которого не было (Имя моего компьютера).

действительно простое исправление, просто используйте эту команду:

ssh root@"IP address"

ssh root@000.000.000.0

Вы можете заменить root любым именем пользователя. Это заставит сервер запросить у вас пароль к желаемому имени пользователя.

kennedy484
источник
Это на самом деле не отвечает на вопрос. Кроме того, предложенный вами метод уже был предложен в другом ответе четыре года назад.
kasperd