액티브 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 : 5901에 대한 로컬 연결이 원격 주소 127.0.0.1:5900으로 전달되었습니다. :: 1 포트 5901에서 로컬 전달 수신. 측면.
slc66

2020 년에 이곳에 온 사람들에게 : netstat은 더 이상 사용되지 않습니다 ss.
ScumCoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.