强制 OpenSSH 提示输入用户名

强制 OpenSSH 提示输入用户名

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

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

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

答案1

如果你说的是 OpenSSH,答案是否定的(你可以检查来源)。正如@cnicutar 指出的那样,你可以使用ssh user@host或配置别名,如下.ssh/config所示

Host meh
  HostName foo
  User bar

进而ssh meh

答案2

由于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/binPATH放入export PATH=$HOME/bin:$PATH您的~/.bashrc/etc/bashrcsource ~/.bashrcsource /etc/bashrc)。

然后,按照需要运行它ssh

[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$

答案3

这是@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
[email protected] password:
 10:57:12 up 71 days,  1:01,  2 users,  load average: 0.00, 0.04, 0.05
$

答案4

在 Windows 批处理中:

echo off
echo Please type your SSH username.
set /p usern
ssh -t %usern%@serveripaddress

相关内容