我从一台远程计算机连接到一个网络中的多台远程计算机。所有远程计算机的用户名和密码是相同的。我想要写一个脚本,将使用我的用户名,并通过登录到机器。我不能在主机上安装任何工具(expect或sshpass)。将公钥复制到目标远程计算机没有意义,因为我很少不止一次地连接到同一台机器。每天都有新机器。
是否可以在主机上设置ssh,使其能够连接到远程计算机,而不需要在目标计算机上设置一些东西?
用于连接到网络其余部分的本地机器- 11 SP3
发布于 2017-01-03 07:51:41
考虑到这些需求,我将在本地计算机上安装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
,但是您可以使用函数键。
https://unix.stackexchange.com/questions/334534
复制相似问题