내가 달리기를 마친 후에
$ 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에 속한 피어 주소를 사용하세요.