
走り終わった後
$ ssh -L 9000:google.com:80 testme@localhost
ソケット(インターネットおよびUnixドメインソケット)を確認して、ポート転送が設定されていることをどのように確認できますか?
ありがとうございます。
答え1
これを行う補完的な方法はさまざまです。
ローカルコンピュータで
ssh
オプションを使用してコマンドを実行でき-v
、転送に関する情報があります。
debug1: Local connections to LOCALHOST:9000 forwarded to remote address google.com:80
debug1: Local forwarding listening on ::1 port 9000.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 9000.
debug1: channel 1: new [port listener]
実行すると、ポート9000で実行中のエントリがnetstat -tulpn
あることを確認できます。ssh
これはリスニングポートを示しています。積極的に転送された接続は表示されません!
# netstat -tulpn
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:9000 0.0.0.0:* LISTEN 15557/ssh
リモートコンピュータから
転送されたポートの現在開いているセッションをすばやくクリックすると、現在トンネルを使用していることを~#
確認できます(telnet
コマンドを使用してlocalhost:9000に接続して何が起こるかを確認できます)。
The following connections are open:
#2 client-session (t4 r0 i0/0 o0/0 e[write]/4 fd 6/7/8 sock -1 cc -1)
#3 direct-tcpip: listening port 9000 for google.com port 80, connect from 127.0.0.1 port 57060 to 127.0.0.1 port 9000 (t4 r1 i0/0 o0/0 e[closed]/0 fd 9/9/-1 sock 9 cc -1)
また、netstat -tulpn
このコンピュータに開いているポートに関する情報も提供しますが、開いているポートが接続を介して確立されたポートであることを保証することはできません。ほとんどの場合、リモートマシンへのルートアクセス権がないため、SSHセッションのPIDとnetstat
結果からPIDを確認できません。
答え2
SSH接続が確立されると、ポート9000にリスニングソケットが表示されます。
$ ss -o state listening 'sport = 9000'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 128 127.0.0.1:9000 *:*
tcp 0 128 ::1:9000 :::*
google.com
ポート 9000 に接続するまで接続は表示されません。
$ nc localhost 9000
その後、他の端末で次の内容を見ることができます。
$ ss -o state established 'dport = 80'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 0 10.10.10.2:34948 216.58.204.142:http
Googleに属するピアアドレスを使用してください。