최신 버전의 OpenSSH에서 리버스 터널을 만들 때 사용 가능한 포트를 바인딩하기 위해 원격 포트 0을 지정할 수 있습니다.
-R [바인드 주소 :] 포트 : 호스트 : 호스트 포트
...
포트 인수가 '0'인 경우, 청취 포트는 서버에서 동적으로 할당되고 런타임에 클라이언트에보고됩니다.
openssh ssh 클라이언트 맨 페이지
내 질문은 (자동으로) 서버에서이 포트 할당을 결정하는 방법입니다. ssh 클라이언트를 실행하는 호스트에보고되는 것이 도움이되지는 않지만,이 포트에 연결하여 클라이언트의 서비스에 액세스하려고하는 대상에는보고되지 않습니다.
내가 생각할 수있는 두 가지 유사한 옵션이 실행 중입니다.
# netstat -ntlp
서버에서 sshd에 의해 127.0.0.1에 바인드 된 의심 포트를 찾거나
# lsof -p $PPID | grep TCP | grep LISTEN
그러나 이들 중 어느 것도 자동화 관점에서 유쾌하지 않으며 이러한 터널이 두 개 이상 생성되면 동적 포트를 원래 서비스 포트에 다시 연결할 수있는 방법이 없습니다.
SSH_CONNECTION 환경 변수와 같지만 활성 터널과 같이 sshd 서버 측에서 활성 터널 목록 (로컬 및 원격 포트 번호 모두)을 효과적으로 얻을 수없는 것이 있습니까?
어떤 맥락에서, 호스트에 잠재적으로 매우 많은 동시 역방향 터널을 만들고 많은 다른 호스트에서 동일한 포트 번호로 다시 터널링하려고합니다. TCP 스택이 자동으로 포트 풀을 관리하게하는 것이 가장 효과적인 방법입니다.