在我们的环境中,我们有几台服务器正在生产中。每次我想搜索某些内容时,它可能是4个不同服务器中的1个。 我正在创建一个脚本来自动执行此搜索,以便我直接知道涉及哪个服务器。
我通过jumphost连接。
到目前为止,以下命令工作正常:
$ ssh -oProxyCommand="ssh -W %h:%p user@jumphost" user@server "ls"
现在,因为我必须多次运行,我正在寻找一种只需要使用密码一次的方法。
jumphost和服务器都需要相同的密码,公钥不是一个选项(不允许,我实际上不能这样做。)
我一直在阅读 sshpass ,我正在尝试这个:
$ sshpass -p password ssh -oProxyCommand="ssh -W %h:%p user@jumphost" user@server "ls"
(我知道-p不安全,一旦我成功完成这一步,就会使用-f -f。
当我这样做时,我可以在两个系统中登录,但命令在我看到ls的结果之前返回。 我试图让ssh的 -t 选项没有任何成功。
我也尝试过ssh中的 -J 选项,结果相同(命令返回时不返回任何结果)。
$ sshpass -p password ssh -J user@jumphost user@server "ls"
有什么建议吗?
编辑:
解决方案是使用sshpass两次:
$ sshpass -p password ssh -oProxyCommand="sshpass -p ssh -W %h:%p user@jumphost" user@server "ls"
答案 0 :(得分:1)
尝试以详细模式运行ssh:
ssh -vvv -oProxyCommand="ssh -W %h:%p user@jumphost" user@server "ls"
我相信它会表现出一些有趣的东西。一个钩子,你可以用它来解决这个问题。