如何讓 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.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.7y.y.y.y則為10.10.0.7

參考:

相關內容