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

如何通过跳板机B直接连接服务器C?SSH输入传递问题

无需手动输入IP,直接通过跳板机连接目标服务器的方法

针对客户端A→跳板机B→服务器C的连接场景,以下几种方法可实现无手动输入的直接连接:

方法1:SSH原生跳转命令(推荐,OpenSSH 7.3+支持)

利用-J参数(ProxyJump)一键完成跳转,命令格式:

ssh -J <跳板机用户名>@<跳板机地址> <目标服务器用户名>@<目标服务器C的IP>

示例:

ssh -J bob@jump.example.com alice@192.168.1.100

该命令会自动先连接跳板机B,再从B转发连接到服务器C,全程无需手动输入任何信息。

方法2:旧版SSH代理命令(适配OpenSSH 7.3以下版本)

若SSH版本较低不支持-J参数,可使用ProxyCommand参数:

ssh -o ProxyCommand="ssh -W %h:%p <跳板机用户名>@<跳板机地址>" <目标服务器用户名>@<目标服务器C的IP>

示例:

ssh -o ProxyCommand="ssh -W %h:%p bob@jump.example.com" alice@192.168.1.100

方法3:适配跳板机B的交互式IP输入场景

如果跳板机B登录后强制要求手动输入C的IP才能连接(比如跳板机有自定义脚本),可通过输入重定向自动传递IP:

方式A:Here-String传递输入

ssh -t <跳板机用户名>@<跳板机地址> 'read ip; ssh <目标服务器用户名>@$ip' <<< "<目标服务器C的IP>"

方式B:管道传递输入

echo "<目标服务器C的IP>" | ssh -t <跳板机用户名>@<跳板机地址> 'read ip; ssh <目标服务器用户名>@$ip'

其中-t参数强制分配伪终端,确保跳板机的交互式脚本能正常读取输入;read ip用于捕获传递的IP,再执行后续SSH连接命令。

额外优化:免密登录配置

若不想每次输入密码,可配置SSH密钥转发:

  1. 将客户端A的公钥(~/.ssh/id_rsa.pub)添加到跳板机B的~/.ssh/authorized_keys文件中
  2. 将跳板机B的公钥添加到服务器C的~/.ssh/authorized_keys文件中
  3. 连接时添加-A参数开启代理转发:
ssh -A -J <跳板机用户名>@<跳板机地址> <目标服务器用户名>@<目标服务器C的IP>

全程无需输入密码,连接体验更顺畅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:15