클라이언트와 서버의 두 시스템이 있습니다.
회사 방화벽 뒤에있는 클라이언트는 다음 명령을 사용하여 공개적으로 액세스 가능한 IP 주소를 가진 서버에 역방향 SSH 터널을 엽니 다.
ssh -nNT -R0 : localhost : 2222 insecure@server.example.com
OpenSSH 5.3+에서 0
발생하는 -R
것은 명시 적으로 포트를 호출하지 않고 "사용 가능한 포트 선택"을 의미합니다. 내가하고있는 이유는 이미 사용중인 포트를 선택하고 싶지 않기 때문입니다. 실제로 유사한 터널을 설정해야하는 클라이언트가 실제로 많습니다.
이 시점의 문제점은 서버가 어떤 클라이언트인지를 서버가 알지 못한다는 것입니다. 로컬 호스트를 통해 이러한 클라이언트 중 하나에 다시 연결하려면 어떤 포트가 어떤 클라이언트를 참조하는지 어떻게 알 수 있습니까?
위의 방식으로 ssh가 포트 번호를 명령 줄에보고한다는 것을 알고 있습니다. 그러나 autossh를 사용하여 세션을 활성 상태로 유지하고 싶습니다. autossh는 fork / exec를 통해 자식 프로세스를 실행하므로 실제 ssh 명령의 출력이 ether에서 손실됩니다.
또한 클라이언트에서 원격 포트를 얻는 다른 방법을 생각할 수 없습니다. 따라서 서버 에서이 포트를 결정하는 방법이 있는지 궁금합니다.
내가 가지고있는 한 가지 아이디어는 / etc / sshrc를 사용하는 것입니다. / etc / sshrc는 아마도 모든 연결에 대해 실행되는 스크립트 일 것입니다. 그러나 적절한 정보를 얻는 방법을 모르겠습니다 (어쩌면 해당 연결을 처리하는 특정 sshd 프로세스의 PID입니까?). 나는 몇 가지 포인터를 좋아합니다.
감사!