Windows의 OpenSSH는 항상 원격 전달에 사용되는 소켓을 LOOPBACK에 바인딩합니다.

Windows의 OpenSSH는 항상 원격 전달에 사용되는 소켓을 LOOPBACK에 바인딩합니다.

제목처럼요.

호스트 A는 서버 역할을 합니다(요새 호스트, 원하는 대로 부르세요).

이제 호스트 B는 다음을 수행합니다.

ssh -R 2222:localhost:22 사용자@A

결과적으로 TCP 소켓이 A에서 생성되지만 2222@에 바인딩됩니다.루프백즉, 원격 연결을 방지합니다.

127.0.0.1을 0.0.0.0으로 변경하는 방법아니면 다른 것더 합리적인가?

답변1

bind_address사양 의 선택적 부분이 누락되었습니다 -R. 에서ssh선적 서류 비치(링크된 대로마이크로소프트) 이렇게 쓴다.

기본적으로 서버의 TCP 수신 소켓은 루프백 인터페이스에만 바인딩됩니다. 이는 를 지정하여 재정의할 수 있습니다 bind_address. 비어 bind_address있거나 address 는 *원격 소켓이 모든 인터페이스를 수신해야 함을 나타냅니다. 원격 지정은 bind_address서버 GatewayPorts옵션이 활성화된 경우에만 성공합니다(참조:sshd_config(5)).

매개변수의 3-튜플 버전을 사용하고 있지만 4-튜플 버전이 필요합니다.

-R port:host:hostport
-R [bind_address]:port:host:hostport

GatewayPorts따라서 누구나 원격 서버의 수신 포트에 연결할 수 있도록 하려면 해당 서버의 포트에서 해당 포트가 활성화되어 있는지 확인해야 합니다.sshd_config 그리고다음과 같은 명령 변형을 사용하십시오.

ssh -R :2222:localhost:22 user@A

또한 선행 콜론( :)은 어디에서든 연결을 허용하는 선행 별표 와일드카드를 의미합니다. 개인적으로 나는 와일드카드가 포함된 이 버전을 통해 작성된 내용이 의도적인 것임을 더 명확하게 알 수 있다고 생각합니다.

ssh -R *:2222:localhost:22 user@A

관련 정보