次のコマンドを使用して、サーバーからエンドポイントへのリバーストンネルを作成しました。
ssh -R 127.0.0.1:4000:localhost:81 [email protected]
トンネルはエンドポイント側で作成され、サーバーポート4000からエンドポイントポート81につながっています。このポートでリッスンしているサービスがありますが、これは重要ではありません。エンドポイントがNATの背後にあり、外部からアクセスする必要があったため、そうしました。
サーバー側でエンドポイントのIPを取得できるかどうか疑問に思います。同様の質問がありました:
しかし、私の場合は具体的です。サーバーへのリバーストンネルが多数あり、エンドポイントがバインドされているポートしか使用できないため、手動でコマンドを入力したくありません。
言い換えると、サーバー側のポート4000のみを使用してエンドポイント側のトンネルIPを取得するにはどうすればよいですか?相関関係を見つけることができませんトンネルの目的でSSH接続が確立されているサーバーのポート4000間。
netstat -plant(サーバー上)は次のことを示しています。
tcp 0 0 127.0.0.1:4000 0.0.0.0:* LISTEN 30307/sshd: user
tcp 0 0 8.8.8.8:22 1.2.3.4:44874 ESTABLISHED 12531/sshd: user
tcp 0 0 8.8.8.8:22 15.16.17.18:44258 ESTABLISHED 30203/sshd: user
tcp 0 0 8.8.8.8:22 22.22.22.22:46696 ESTABLISHED 15639/sshd: user
ご覧のとおり、ポート4000(このポートはエンドポイントポート81に転送されます-ここには表示されていません)と3つのssh接続でリッスンしているサービスがあります。それらの1つはトンネルを提供します。でもどれかわかりません。 8.8.8.8はサーバーのIPです。
NetstatからsshのプロセスIDを取得し、
lsof -p $pid -a -d 3
接続のもう一方の端のIPが表示されます。 sshはホップできるため、これが最終的な場所ではない可能性があります。