OpenSSH の ProxyJump オプションを使用して、自宅のデバイスからジャンプ ホスト経由でエンド ホストに SSH 接続しようとしています。
x.x.x.x
ジャンプ ホストには、唯一のインターフェイスにバインドされた 2 つの IP アドレス( と )がありますy.y.y.y
。エンド ホストへの SSH アクセスが許可されている IP のホワイトリストを持つファイアウォールがあります。y.y.y.y
はリストに載っていますが、x.x.x.x
載っていません。
問題は、ジャンプ ホストのデフォルトがx.x.x.x
送信 SSH に使用されることです。
-b
ジャンプ ホストからエンド ホストに手動で ssh する場合は、次のように OpenSSH のオプションを使用してデフォルトを上書きできますssh -b y.y.y.y endhost
。これは正常に動作します。
しかし、ジャンプホストを中間として使用して個人デバイスからエンドホストに直接アクセスしようとすると、うまくいかないようです。バインド アドレスを自分のものに指定するいくつかのバリエーションを試しましたが、うまく~/.ssh/config
いきませんでした。
ジャンプ ホストに特定のバインド アドレスを使用するように指示する方法はありますか?
答え1
私の設定の問題は、ジャンプホスト送信トラフィックに使用したいIP (x.x.x.x
あなたの例) とは異なる IP (あなたの例) を使用するように設定されていました。sshd
y.y.y.y
そこで、私にとってうまくいった方法の一つは、ジャンプホストのためにエンドホストのIP。
上のジャンプホスト(私のは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 の Floating 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
。
参考文献: