
私は、以下のことが可能かどうか、また、どのように可能かを理解するのに苦労しています。
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:もしQ1可能だ:
3 台目のマシン (たとえば、ラップトップ) があり、からL
のシェルにアクセスしたいとします。 に SSH トンネルでアクセスできますか?T
L
A
L
T ----> ssh ----> A <---- ssh < ---- L
T <------- ?? %&£€ ?? <------- L # is this possible?
ご協力いただければ幸いです。
答え1
もちろん可能です。
Q1: ssh 経由のリバース トンネリングは可能ですか?
はい予備トンネルに関するいくつかの回答を以下に示します。
Q2: 予約済みトンネルのトンネリングは可能ですか?
はいこれは基本的にトンネル上の SSH トンネルです。トンネルへのトンネルに関するいくつかの回答を以下に示します。
答え2
私はいつもこれを反対方向に行っています。まず、T から A のローカルホストへのリバース SSH トンネルを確立し、次に L から AT トンネルの A 側にトンネルし、次に ssh を使用して LA トンネルのローカル部分に接続します。これで、LAT 経由でリモート接続できます。
私の例では、A はポート 22123 で ssh 接続をリッスンしています。
ローカルではユーザー名 user を使用し、リモートでは user.name を使用します。
ローカルでは ~/.ssh/A_id_rsa と ~/.ssh/T_id_rsa というキーがあり、それぞれ user.name として 2 台のマシン A と T に接続します。
以下は、T 上で実行する必要がある TA トンネルを接続するスクリプトです。
#!/bin/bash SSH_KEY="-i /home/user.name/.ssh/A_id_rsa" REMOTE_USER="ユーザー名" GATEWAY_MACHINE="A.domain.com" ゲートウェイSSHポート="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" ゲートウェイSSHポート="22123" ssh -N -L2201:127.0.0.1:2201 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}
次に、ローカルホストの /etc/hosts ファイルに次のコードを追加して、トンネルのローカル側を T として参照できるようにします。
127.0.0.1 テ
次に、このスクリプト(この例では/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 を押して bg を実行してこれを実行します。その前に、A_id_rsa をロック解除するためのパスワードを入力します (まだキーチェーンにロードされていない場合)。