私の設定には3台のコンピュータがあります。
M1 M2 M3
- M3を制御するM1でSSHシェルを開く必要があります。
- M1 と M3 は異なるファイアウォールの背後にあるため、互いに直接接続することはできません。
- M1とM3できるM2に接続し、SSH経由で接続します。しかし、その逆は真実ではありません。 M2はM1またはM3に到達できません。
M2を使用してM1からM3までのトンネルを作成できますか?
M1 --> M2 <-- M3
\____________^
答え1
M3から
ssh -R localhost:2602:localhost:22 user@M2
M1から
ssh -L localhost:2602:localhost:2602 user@M2
これでM1からM3に直接接続できます(ここでlocalhostは実際にはM3を表します)。
ssh user@localhost -p 2602
答え2
私は-J
これをするために(「ジャンプ」だったことを覚えています)を使います。
M1 -> M3(M2経由):
ssh -J M2 M3
scp
次のものもサポートします。
scp --ProxyJump=M2 localfile M3:remotefile
IPの面で説明するのが一番簡単だと思います。
M1 = 192.168.1.100
M2 = 192.168.1.101 & 10.10.1.200
M3 = 10.10.1.201
M1はアクセスできないため、10.10.1.x
両方のネットワークはM2を介してアクセスする必要があります。これは、各システムに異なるユーザーがいると仮定すると複雑になります。 M1からM3へのSSH:
[email protected]: ~ $ ssh -J [email protected] [email protected]
またはremotefile
M3からM1へ:
scp [email protected] [email protected]:remotefile localfile