当您运行不带login_name参数的ssh时,它将自动使用您的本地用户名作为login_name。例如:
cogan@localhost$ ssh myserver
cogan@myserver's password:
有没有办法强制ssh提示输入login_name?
当您运行不带login_name参数的ssh时,它将自动使用您的本地用户名作为login_name。例如:
cogan@localhost$ ssh myserver
cogan@myserver's password:
有没有办法强制ssh提示输入login_name?
Answers:
由于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
or /etc/bashrc
和source ~/.bashrc
or或source /etc/bashrc
)中。
然后,按您的方式运行它ssh
:
[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$
[ 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
。
这是@meh答案的改编。
在shell脚本中,我们提示用户名。
我们在随后的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
$
所以我遇到了同样的问题。我正在使用cmd
ssh "IP address"
ssh 000.000.000.0
然后它立即询问一个不存在的用户的密码(“我的电脑名称”)。
真正简单的修复方法是使用以下命令:
ssh root@"IP address"
ssh root@000.000.000.0
您可以将root替换为所需的任何用户名。这将导致服务器提示您输入所需用户名的密码。