myServer에서 다음 명령을 실행합니다.
ssh -g -p 9922 -f myuser@serverOnOpenInternet -L 1212:serverBehindFirewall:80 -N
serverOnOpenInternet은 포트 9922에서 sshd를 실행합니다. (내 전화번호 아님)
myServer에서 관련 명령을 실행하면 다음을 수행할 수 있습니다.
wget http://localhost:1212/
serverBehindFirewall의 인덱스 페이지에 성공적으로 도달합니다.
하지만: 다른 컴퓨터에서 공격을 시도하면:
http://myServer:1212/
연결 시간이 초과되어 터널을 통해 serverBehindFirewall에 연결할 수 없습니다.
Mac에서 -g 스위치를 테스트하고 예상대로 작동하는지 확인했습니다. 나는 이것이 ssh의 다른 버전/구현이라는 것을 알고 있습니다. 그러나 내가 아는 한 Ubuntu 14.04의 ssh는 -g 스위치도 지원해야 합니다. (맨 페이지에 언급되어 있습니다)
도와주세요:)
답변1
-L 옵션에 바인드 주소를 지정해야 할 수도 있습니다. 좋다:
-L 192.168.1.100:1212:serverBehindFirewall:80
요청에 따라 아래에서 붙여넣습니다.
/etc/ssh/ssh_config의 "GatewayPorts" 옵션을 "yes"로 설정하면 문제가 해결되었습니다.
이는 "GatewayPorts yes"를 지정하는 것과 거의 동일한 효과를 갖습니다. 지정된 주소에 바인딩됩니다. "GatewayPorts yes" 옵션은 와일드카드 주소(0.0.0.0)에 자동으로 바인딩되어 원격 클라이언트가 연결할 수 있도록 합니다. 지정하지 않고 IP-Address를 바인딩에 사용하지 않는 경우(-L : : : ) 루프백 주소 127.0.0.1만 바인딩하므로 원격 호스트는 연결할 수 없습니다.