You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

sshpass结合ProxyCommand/ssh -J执行命令无返回结果的解决办法

针对你遇到的通过跳板机使用sshpass自动执行命令却无法获取结果的问题,我这里有个经过验证的解决方案,刚好适配你生产环境4台服务器的场景:

问题回顾

你原本手动执行的跳板机连接命令是正常可用的:

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

但当引入sshpass实现密码自动输入时,不管用ProxyCommand还是ssh -J选项,哪怕加上-t参数,都能成功登录跳板机和目标服务器,却拿不到命令执行的输出结果。

可行解决方案

经过测试,给跳板机和目标服务器的连接分别配置一次sshpass就能解决问题,完整命令如下:

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

简单解释下逻辑

  • 内层的sshpass -p password_jumphost ssh -W %h:%p user@jumphost:自动输入跳板机的密码,建立起通往跳板机的代理转发通道;
  • 外层的sshpass -p password_server ssh ...:自动输入目标服务器的密码,通过已经建好的代理通道连接目标服务器,执行指定命令后就能正常获取输出结果了。

内容的提问来源于stack exchange,提问作者jlengrand

火山引擎 最新活动