强制ssh提示用户


11

当您运行不带login_name参数的ssh时,它将自动使用您的本地用户名作为login_name。例如:

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

有没有办法强制ssh提示输入login_name?

ssh 

Answers:


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您的~/.bashrcor /etc/bashrcsource ~/.bashrcor或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 namesshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user
chown

0

这是@meh答案的改编。

在shell脚本中,我们提示用户名。

我们在随后的ssh调用中传递用户名。

以下运行uptimecontosso.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)'16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.