我正在从一台远程计算机连接到一个网络中的许多远程计算机。所有远程计算机的用户名和密码都相同。我想编写一个脚本,该脚本将使用我的用户名并传递给登录计算机。我无法在主机上安装任何工具(expect或sshpass)。将公用密钥复制到目标远程计算机没有任何意义,因为我很少会多次将同一台计算机连接到同一台计算机。每天-新机器。
是否可以在主机上设置ssh以便能够连接到远程计算机而无需在目标计算机上进行任何设置?
我用于连接到网络其余部分的本地计算机-SUSE Linux Enterprise Server 11 SP3
鉴于需求,我将expect
在本地计算机上安装并使用它来添加新的命令。让我们将远程主机one
和many1
,many2
以及本地计算机称为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
身份运行./script many1
它,它将使您连接到one
然后,当您要连接时,many1
只需键入~p
。它将运行ssh命令,如果出现问题,请回答“您是否要连接”问题,并提供密码。
当然,有关在脚本中存储密码的不安全性的标准注释也适用。另一个小缺点是您需要为此指定一个专用键序列。我在这里使用,~p
但是您可以使用功能键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句