我正在尝试使用 OpenSSH 的 ProxyJump 选项通过跳转主机从我的家用设备 SSH 到终端主机。
跳转主机恰好有两个 IP 地址绑定到其唯一接口:x.x.x.x
和y.y.y.y
。防火墙具有允许 ssh 访问终端主机的 IP 白名单。y.y.y.y
在列表中但实际上x.x.x.x
不在。
问题是,跳转主机的默认设置是用于x.x.x.x
出站 SSH。
如果我手动从跳转主机 ssh 到终端主机,我可以使用 OpenSSH 的选项覆盖默认值-b
,例如ssh -b y.y.y.y endhost
。这很好用。
但是,当我尝试使用 jumphost 作为中间件直接从我的个人设备连接到终端主机时,我似乎无法让它工作。我尝试了几种指定绑定地址的变体,~/.ssh/config
但没有成功。
有没有办法指示跳转主机使用特定的绑定地址?
答案1
我的设置中的问题是跳转主机x.x.x.x
被设置为使用与我想要sshd
用于其出站流量的IP(在您的示例中)不同的 IP (y.y.y.y
在您的示例中)。
因此,对我有用的一个方法是在跳转主机为了终端主机'啜。
在跳转主机(我的运行的是 Ubuntu 20.04):
route add -host <endhost's IP>/32 gw y.y.y.1 dev <y.y.y.y's Iface>
<endhost's IP>
IPv4 类似于哪里n.n.n.n
,是与之关联的<y.y.y.y's Iface>
接口,例如。y.y.y.y
eth0
参考:
注意,我专门研究了如何sshd
通过 DigitalOcean 的浮动 IP 进行路由。在这种情况下,y.y.y.y
需要使用以下方法进行发现:
curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address
因此如果该命令返回10.10.0.7
,那么y.y.y.y
就是10.10.0.7
。
参考: