如何让 SSH 跳转主机使用特定的出站绑定地址?

如何让 SSH 跳转主机使用特定的出站绑定地址?

我正在尝试使用 OpenSSH 的 ProxyJump 选项通过跳转主机从我的家用设备 SSH 到终端主机。

跳转主机恰好有两个 IP 地址绑定到其唯一接口:x.x.x.xy.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.yeth0

参考:


注意,我专门研究了如何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

参考:

相关内容