2

在我们的环境中,我们有几台服务器在生产中。每次我想搜索某些东西时,它可能在 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 不安全,一旦我成功完成这一步,就会使用 -e of -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"

4

1 回答 1

2

尝试以详细模式运行 ssh:

ssh -vvv -oProxyCommand="ssh -W %h:%p user@jumphost" user@server "ls"

我相信它会显示出一些有趣的东西。一个钩子,你可以用它来解决这个问题。

于 2018-05-09T11:16:59.647 回答