web-dev-qa-db-ja.com

自分でsshから転送されたポートをリストしますか?

そのようにサーバーに接続する場合:

JP_PORT=$(shuf -i 8895-9100 -n 1)
TB_PORT=$(shuf -i 6010-6200 -n 1)
ssh -Y -L ${JP_PORT}:127.0.0.1:${JP_PORT} -L ${TB_PORT}:127.0.0.1:${TB_PORT} <Host>

接続が確立されたら、転送したポートのリストを返すターミナルコマンドはありますか?

3
Austin

Lsofでリストできます

Sudo lsof -i -n 

Grepを使用して結果をフィルタリングできます

Sudo lsof -i -n  | grep ssh
4
Panther

実際に使用されている転送された接続のみをリストするだけで十分であり、セッションがインタラクティブである場合(この場合のように)、sshセッション内で~#エスケープを使用できます。入力するだけ enter~#

$ ssh -L1234:localhost:22 localhost
seb@localhost's password: 
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64)
$ ~#
The following connections are open:
  #2 client-session (t4 r0 i0/0 o0/0 fd 7/8 cc -1)
  #3 direct-tcpip: listening port 1234 for localhost port 22, connect from 127.0.0.1 port 37238 to 127.0.0.1 port 1234 (t4 r1 i0/0 o0/0 fd 10/10 cc -1)

これは、エスケープコマンドを使用してセッション内で後で追加されたため、コマンドラインに表示されない転送もリストします。

Sshセッション内の他の便利なコマンドについては、~?を試してください。 sshマニュアルページ のESCAPE CHARACTERSのセクションも参照してください。

2
Sebastian Stark