使用密码通过 ssh 连接到远程服务器的脚本

使用密码通过 ssh 连接到远程服务器的脚本

我正在从一台远程计算机连接到一个网络内的多台远程计算机。所有远程计算机的用户名和密码都是相同的。我想编写一个脚本,该脚本将使用我的用户名并传递登录到机器。我无法在主机上安装任何工具(expect 或 sshpass)。将公钥复制到目标远程计算机没有任何意义,因为我很少多次连接到同一台计算机。每天都有新机器。

是否可以在主机上设置 ssh 以便能够连接到远程计算机,而无需在目标计算机上进行设置?

我用来连接到网络其余部分的本地计算机 -SUSE Linux 企业服务器 11 SP3

答案1

expect考虑到我将在本地计算机上安装并使用它来添加新命令的要求。让我们将远程主机称为onemany1many2将本地计算机称为mybox。像这样的东西(未经测试)

#!/usr/bin/expect
# connect to "one"
spawn ssh username@one
# next lines shouldn't be needed, should have shared keys for "one"
expect "assword: "
# provide password for "one", ending with "\r"
send -- "the_password_for_username@one\r"
# mainloop
interact "~p" {
    send "ssh manyuser@[lindex $argv 0]\r"
    expect "yes/no)? " { send "yes\r" exp_continue } "assword: "
    send "the_password_for_many\r"
    }

mybox在as上运行它./script many1,它会将您连接到one

然后,当您想连接时,many1只需键入~p.它将运行 ssh 命令,回答“您想连接吗”问题(如果询问),并提供密码。

当然,关于在脚本中存储密码的不安全性的标准评论也适用。另一个小缺点是您需要为此指定一个按键序列。我在这里使用~p,但你可以使用功能键。

相关内容