sshpass with proxycommand returns 没有 运行 任何东西

sshpass with proxycommand returns without running anything

在我们的环境中,我们有多个生产服务器。每次我想搜索某些东西时,它可能在 4 个不同服务器中的 1 个中。 我正在创建一个脚本来自动执行此搜索,以便我直接知道涉及哪个服务器。

我正在通过 jumphost 连接。

到目前为止,以下命令工作正常:

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

现在,因为我必须 运行 这几次,所以我正在寻找一种只需使用一次密码的方法。

跳转主​​机和服务器都需要相同的密码,public密钥不是一个选项(不允许,我真的做不到)。

我一直在阅读有关 sshpass 的内容,并且正在尝试这样做:

$ sshpass -p password ssh -oProxyCommand="ssh -W %h:%p user@jumphost" user@server "ls"

(我知道 -p 不安全,一旦成功完成此步骤,我将立即使用 -e 或 -f)。

当我这样做时,我可以在两个系统中登录,但在我看到 ls 的结果之前使用命令 returns。 我曾尝试将 -t 选项设置为 ssh 但没有成功。

我也尝试了 ssh 的 -J 选项,结果相同(命令 returns 没有返回任何结果)。

$ 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"

在详细模式下尝试 运行 ssh:

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

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