ショートバージョンについては、下記の編集内容をご覧ください。
サーバー上のSSHトンネルの状態を表示できません。
以下はいくつかの関連情報です。
user001 = remote client's username
123.123.123.123 = ssh server's ip
111.222.111.222 = database server
それでは、テスト用に1つのリモートクライアントのみを接続します。要求された2つのリバーストンネルを表示できます(フィルタリングされた出力)。
lsof -i -P
sshd 14652 user001 8u IPv4 1171285 0t0 TCP localhost:2000 (LISTEN)
sshd 14652 user001 9u IPv4 1171287 0t0 TCP my.domain.com:2001 (LISTEN)
netstat -atpe --numeric-ports
tcp 0 0 127.0.0.1:2000 0.0.0.0:* LISTEN user001 1171285 14652/sshd: user001
tcp 0 0 123.123.123.123:2001 0.0.0.0:* LISTEN user001 1171287 14652/sshd: user001
user001によって開始されたように見えますが、生成された一般(-L)トンネルはリストされませんlsof
。これに関して私が見つけることができる唯一の情報はディスプレイを通してですnetsat
。トンネル自体ではないように見えますが、SSHサーバーとデータベースサーバー間のネットワーク接続は次のとおりです。
tcp 0 0 123.123.123.123:60299 111.222.111.222:52849 TIME_WAIT root 0 -
tcp 0 0 123.123.123.123:60300 111.222.111.222:52849 TIME_WAIT root 0 -
これは、ルートの下に表示されるだけでなく、ローカルIPのみを表示するため、誰のトンネル/接続かを知る方法がないため、ピタです。 50以上のリモートクライアントがすべて接続されていると、トラブルシューティングはめちゃくちゃになります。
質問:
SSHトンネルを表示するより良い方法はありますか?より良いコマンド?どのプログラム?
リモートクライアントのユーザーの下にこれを表示したり、少なくともリモートクライアントのIPを表示したりする方法はありますか?
なぜlsof
表示されないのですか?
ありがとうございます。
- - -編集する - - -
まあ、最初から始めたい場合は、問題の単純化されたバージョンは次のとおりです。
SSHクライアント接続済みSSHサーバーローカルポート100からポート5000にトンネルを要求します(-Lを使用)。データベースサーバー同じネットワークでSSHサーバー。
だから私たちは次のトンネルを得ます:
クライアント:100 -----> SSHサーバー----->データベースサーバー:5000
ログイン時にトンネルが機能しているかどうかを確認する方法SSHサーバー?
私は見たくない。SSHサーバー一緒に働くデータベースサーバートンネルがどんな材料で作られたのか見たいです。SSHクライアントそれでもアクティブです。
netstatに示されている情報は、サーバーがSSHサーバーの任意のポートからポート5000にアクティブな接続を持っていることを示しています。
答え1
TIME_WAITに2つの接続が発生したと確信しています。仕える人接続が終了します。これは、サーバーがrootとして実行されている場合に意味があります。
-Lオプションは、実際のトンネルを生成せずにトンネリング機能のみを生成することに注意してください。入力IP /ポートに接続すると、SSHは実際に宛先IP /ポートのトンネルを生成します。その後、誰かが接続を閉じるまで、lsof / netstat / etcでESTABLISHED状態の接続を表示できます。
別のターミナルウィンドウを開き、何も入力せずに「telnet IP port」(-Lで指定したトンネルフロントエンドのIP /ポートである必要があります)を入力してトンネルを有効にします。次に、サーバーウィンドウを開き、lsof / netstatコマンドを実行して物理接続が確立されていることを確認します。
お役に立てば幸いです。教えてください!