web-dev-qa-db-ja.com

リバーストンネルIPを取得する方法

次のコマンドを使用して、サーバーからエンドポイントへのリバーストンネルを作成しました。

ssh -R 127.0.0.1:4000:localhost:81 [email protected]

トンネルはエンドポイント側で作成され、サーバーポート4000からエンドポイントポート81につながっています。このポートでリッスンしているサービスがありますが、これは重要ではありません。エンドポイントがNATの背後にあり、外部からアクセスする必要があったため、そうしました。

サーバー側でエンドポイントのIPを取得できるかどうか疑問に思います。同様の質問がありました:

SSHリバーストンネルのソースの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です。

1
Kolibra

NetstatからsshのプロセスIDを取得し、

lsof -p $pid -a -d 3

接続のもう一方の端のIPが表示されます。 sshはホップできるため、これが最終的な場所ではない可能性があります。

0
danblack