アクティブなSSHポートフォワーディングを知る方法


12

~/.ssh/configサーバーごとに異なるポートを使用して、VNCの多くのポート転送を構成しました。

SSHセッションを開いたときにどのポートに転送されているかを知るのに役立つコマンドはありますか?

回答:


13

この-vオプションを使用すると、ssh転送内容が表示されます(ただし、他のデバッグメッセージも表示されます)。

ssh -v -L2222:localhost:22 remotehost

表示されます:

...debug messages...
debug1: Authentication succeeded (publickey).
Authenticated to remotehost ([10.0.0.23]:22).
debug1: Local connections to LOCALHOST:2222 forwarded to remote address localhost:22
debug1: Local forwarding listening on ::1 port 2222.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 2222.
...debug messages...

そして、そのリモートシェルに接続すると、特別なキーシーケンスを入力できます。

~#

次のような接続がリストされます。

The following connections are open:
  #3 client-session (t4 r0 i0/0 o0/0 fd 7/8 cc -1)
  #4 direct-tcpip: listening port 2222 for localhost port 22, connect from 127.0.0.1 port 59742 (t4 r1 i0/0 o0/0 fd 10/10 cc -1)

ただし、これは、別のプログラムで実際に使用されている転送済みポートのみをリストすることに注意してください(この場合telnet localhost 2222、ローカルマシンで転送先にしただけremotehostです)。

現在転送されている接続がない場合でも、netstat次のようなコマンドを使用して、sshコマンドがローカルでリッスンしているものを確認できます。

% netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      28995/ssh       
tcp6       0      0 ::1:2222                :::*                    LISTEN      28995/ssh       

netstatまた、このコマンドは、おそらく他のものをリストアップしますが、何を出力に探したいのですPID/Program探すために、カラムsshのプロセス、およびLocal Addressポートはに耳を傾けされているかを示します列が。この例ではport 2222、マシン上のIPv4とIPv6の両方のインターフェースをリッスンしています。


1
この答えをありがとう、私の目標は/etc/update-motd.d/にスクリプトを追加して、リダイレクトされたポートを表示することでした。しかし、〜#コマンドを使用すると、サーバーにリダイレクトされるポートのみがあります。そして、目標は(ssh -v出力の一部)を表示することでした:LOCALHOSTへのローカル接続:リモートアドレス127.0.0.1:5900に転送されるローカル接続::ポート5901でリッスンするローカル転送:この2行のクライアントのみを表示することは不可能なようです側。
slc66

2020年以降にここに来る人々のために:netstatを支持して廃止されましたss
ScumCoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.