You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用单条命令从A服务器经B跳转至C并执行bash脚本?

当然可以实现!

你完全可以用单条命令完成从A服务器经B跳转至C,再在C上执行bash脚本的操作,不用手动一步步登录每台服务器。下面根据不同的SSH版本和场景,给你几种简单的实现方式:

方法1:用ProxyJump(推荐,OpenSSH 7.3及以上版本)

如果A服务器上的SSH版本是7.3或更新,ProxyJump是最简洁的跳转方式,直接支持中间服务器中转:

ssh -J b用户名@B服务器地址 c用户名@C服务器地址 'bash -s' < /本地/脚本路径/your_script.sh
  • -J b用户名@B服务器地址:告诉SSH先连接到B服务器作为中转
  • c用户名@C服务器地址:目标C服务器的登录信息
  • 'bash -s' < /本地/脚本路径/your_script.sh:让C服务器启动bash进程,并读取你本地的脚本内容来执行。如果脚本已经存放在C服务器上,直接换成脚本在C上的绝对路径即可,比如:
    ssh -J b用户名@B服务器地址 c用户名@C服务器地址 '/home/c用户名/scripts/your_script.sh'
    

方法2:兼容旧版本的ProxyCommand

如果A服务器的SSH版本低于7.3,就用ProxyCommand来实现中转连接:

ssh -o ProxyCommand="ssh -W %h:%p b用户名@B服务器地址" c用户名@C服务器地址 'bash -s' < /本地/脚本路径/your_script.sh

这里的ProxyCommand会让SSH先连接到B服务器,再通过B转发到C服务器的SSH端口(%h代表目标主机,%p代表目标端口)。

额外优化:配置SSH Config简化命令

如果你经常需要做这种跳转操作,可以编辑A服务器上的~/.ssh/config文件,添加以下配置:

Host C_server
  User c用户名
  HostName C服务器的IP或域名
  ProxyJump b用户名@B服务器地址

之后你只需要执行更简短的命令即可:

ssh C_server 'bash -s' < /本地/脚本路径/your_script.sh

如果脚本在C服务器上,直接写:

ssh C_server '/home/c用户名/scripts/your_script.sh'

注意事项

  • 如果脚本需要用sudo权限执行,把命令调整为:
    ssh -J b用户名@B服务器地址 c用户名@C服务器地址 'sudo bash -s' < /本地/脚本路径/your_script.sh
    
    (可能需要输入sudo密码,建议提前在C服务器上配置免密sudo或者SSH密钥登录,让操作更顺畅)
  • 确保A能访问B、B能访问C,且你拥有对应服务器的登录权限。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:12:49