これらは、SSH トンネルをテストまたはトラブルシューティングするためのより詳細な手順です。それらのいくつかはスクリプトで使用できます。2 つのアプリケーションが機能しなくなった後、2 つのアプリケーション間のリンクをトラブルシューティングする必要があったため、この回答を追加します。ssh プロセスを grep するだけでは十分ではありませんでした。そしてnc -z
、そのオプションがnetcatの呪文で利用できなかったため、使用できませんでした.
最初から始めましょう。IP アドレスが 10.0.0.1の localと呼ばれるマシンと、10.0.3.12 にremoteと呼ばれる別のマシンがあるとします。これらのホスト名を以下のコマンドの先頭に追加して、どこで実行されているかを明確にします。
目標は、ポート 123 のリモート マシンのループバック アドレスからポート 456 のローカル マシンに TCP トラフィックを転送するトンネルを作成することです。これは、ローカル マシンで次のコマンドを使用して実行できます。
local:~# ssh -N -R 123:127.0.0.1:456 10.0.3.12
プロセスが実行されていることを確認するには、次のようにします。
local:~# ps aux | grep ssh
出力にコマンドが表示されたら、続行できます。それ以外の場合は、SSH キーがリモートにインストールされていることを確認してください。リモート IP の前にユーザー名を除外すると、ssh は現在のユーザー名を使用することに注意してください。
次に、リモートでトンネルが開いていることを確認します。
remote:~# netstat | grep 10.0.0.1
次のような出力が得られるはずです。
tcp 0 0 10.0.3.12:ssh 10.0.0.1:45988 ESTABLISHED
リモートからホストに送られるデータを実際に見ることができればうれしいです。ここでnetcatの出番です。CentOS では でインストールできますyum install nc
。
まず、ローカル マシンでリッスン ポートを開きます。
local:~# nc -l 127.0.0.1:456
次に、リモートで接続します。
remote:~# nc 127.0.0.1 123
ローカル マシンへの 2 つ目のターミナルを開くと、接続を確認できます。このようなもの:
local:~# netstat | grep 456
tcp 0 0 localhost.localdom:456 localhost.localdo:33826 ESTABLISHED
tcp 0 0 localhost.localdo:33826 localhost.localdom:456 ESTABLISHED
さらに良いことに、リモートで何かを入力してください。
remote:~# nc 127.0.0.1 8888
Hallo?
anyone there?
これがローカル ターミナルにミラーリングされていることがわかります。
local:~# nc -l 127.0.0.1:456
Hallo?
anyone there?
トンネル稼働中!しかし、ローカル マシンのポート 456 でリッスンすることになっているappnameという名前のアプリケーションがある場合はどうでしょうか。両側で nc を終了してから、アプリケーションを実行します。これを使用して、正しいポートでリッスンしていることを確認できます。
local:~# netstat -tulpn | grep LISTEN | grep appname
tcp 0 0 127.0.0.1:456 0.0.0.0:* LISTEN 2964/appname
ちなみに、リモートで同じコマンドを実行すると、ポート 127.0.0.1:123 でリッスンしている sshd が表示されるはずです。