次のことが可能かどうかを理解しようとしています。
T
リモートで(可能な限り)アクセスしたいマシン(ターゲット)があるとしましょうssh
。
T
ルーター/ファイアウォールの背後にあるため、R
ポート(たとえば)をポート22
に転送できません。R
全体的に直接的なアプローチは不可能です。22
T
ssh
T
今言う
私は
A
私が完全に制御できる機械を持っています。T
からSSH経由で接続できますA
。T: ssh user@A
効果がありました。
質問1:T
のシェルにアクセスするために使用できますかA
?つまり、T
で作成された接続をでとして使用A
できますか?T
A
T ---> ssh ----> A # this is possible
T <--- ? shell ? <---- A # is this possible?
質問2:もし第1四半期可能です:
L
3番目のコンピュータ(ラップトップなど)があり、私の目標はT
シェルにアクセスすることですL
。 SSHトンネルを介してA
接続できますかL
?
T ----> ssh ----> A <---- ssh < ---- L
T <------- ?? %&£€ ?? <------- L # is this possible?
助けてくれてありがとう。
答え1
これは確かに可能です。
第1四半期:SSH経由で駅トンネルは可能ですか?
はい。予約されたトンネルへの回答は次のとおりです。
第2四半期:トンネルを予約できますか?
はい、これは基本的にトンネルを通るSSHトンネルです。トンネルへのトンネリングへの答えは次のとおりです。
答え2
私はいつもこれをやってきましたが、反対方向でした。まず、TからAのローカルホストにリバースSSHトンネルを設定し、LからATトンネルのAに向かってトンネリングし、SSHを使用してLAトンネルのローカル部分に接続し、LATを介してリモートで接続します。
私の例では、AはSSH接続のためにポート22123をリッスンしています。
ユーザー名userをローカルに使用し、user.nameをリモートで使用します。
ローカルで ~/.ssh/A_id_rsa と ~/.ssh/T_id_rsa という名前のキーがあり、それぞれ user.name で 2 台のマシン A と T に接続されています。
これはTAにトンネリングしてTで実行する必要があるスクリプトです。
#!/bin/bash SSH_KEY="-i /home/user.name/.ssh/A_id_rsa" REMOTE_USER="ユーザー名" GATEWAY_MACHINE="A.domain.com" GATEWAY_SSH_PORT="22123" ssh -N -R2201:127.0.0.1:22 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}
これはLAにトンネリングし、Lで実行する必要があるスクリプトです。
#!/bin/bash SSH_KEY="-i /home/user/.ssh/A_id_rsa" REMOTE_USER="ユーザー名" GATEWAY_MACHINE="A.domain.com" GATEWAY_SSH_PORT="22123" ssh -N -L2201:127.0.0.1:2201 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}
次に、トンネルTのローカル側を呼び出すことができるように、localhostの/ etc / hostsファイルに次のものを追加しました。
127.0.0.1T
次に、このスクリプトを使用します。この場合は、/usr/local/bin/Tという名前で接続します。
#!/bin/bash SSH_KEY="-i /home/user/.ssh/T_id_rsa" REMOTE_USER="ユーザー名" ssh -p 2201 ${SSH_KEY} ${REMOTE_USER}@T
TA トンネルは逆方向なので -R であり、LA トンネルはローカルなので -L です。スクリプトの -N は A のシェルを起動しないため、通常実行するか & を使用してバックグラウンドで実行するか、パスワードを入力して ctrl+Z を押し、A_id_rsa をロードしていない場合は bg を実行して実行します。私のキーチェーンに入れてロックを解除してください。