我正在嘗試使用 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
。
參考: