Змусити ssh запросити користувача


11

Якщо ви запускаєте ssh без аргументу login_name, він автоматично використовує ваше локальне ім'я користувача як ім’я login_name. наприклад:

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

Чи є спосіб змусити ssh запросити ім’я для входу?

ssh 

Відповіді:


10

Якщо ви говорите про OpenSSH, відповідь - ні (ви можете перевірити джерело ). Як вказував @cnicutar, ви можете використовувати ssh user@hostабо налаштовувати псевдоніми в .ssh/configмежах рядків

Host meh
  HostName foo
  User bar

а потім ssh meh.


Це відповідь, яку я шукав. Я використовую 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

Ви можете спробувати встановити Користувача на щось незаконне, щоб побачити, що він робить.


Я просто спробував це для задоволення: [ 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.
човен

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 на будь-яке ім'я користувача. Це призведе до того, що сервер запропонує вам ввести пароль до потрібного імені користувача.


Це насправді не відповідає на питання. Окрім запропонованого вами методу, вже було запропоновано в іншій відповіді чотири роки тому.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.