ssh -D
로컬 컴퓨터에서 양말 포트를 만들어 원격으로 트래픽을 전달한 다음 다른 장소로 전달할 수 있습니다.
ssh -L port:host:hostport
로컬 시스템에서 포트를 수신하고 원격 시스템의 관점에서 트래픽을 “host : hostport”로 전달하십시오.
ssh -R port:host:hostport
는 ssh -L
원격 시스템의 포트를 수신하고 로컬 시스템의 관점에서 트래픽을 “host : hostport”로 전달하는 의 대응 입니다.
그러나 ssh -D
원격 컴퓨터에서 양말 포트를 여는 방법 은 무엇입니까? 즉, 트래픽을 로컬로 전달한 다음 다른 장소로 전달할 수 있습니까?
답변
-D
& -L
를 사용 하면 두 시스템간에 통신 할 수 있습니다.
그래서…
- 로컬 시스템
-R
에서 로컬 시스템의 sshd를 가리키는 원격 시스템에서 청취 포트를 작성하는 데 사용하십시오. -D
위에서 만든 포트를 가리키는 원격 컴퓨터에서 사용하십시오 .
나는 아래를 채우는 것이 “생각”할 것입니다 …
ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"
위의 ‘ remotehost
‘, ‘ remoteport
‘& ‘ localport
‘변경이 필요합니다. 양말 프록시는 9050에 형성됩니다.
답변
~ / .ssh / config의이 스 니펫을 사용하여 투명하게 얻을 수 있습니다.
Host sockstunnel
ProxyCommand ssh -D 3128 localhost nc -q 1 localhost 22
Host target
RemoteForward 3128 localhost:3128
ProxyCommand ssh -W target:22 sockstunnel
세부
우리는 역동적 인 DynamicForward를 원합니다. 이것은 두 개의 ssh 명령을 사용하여 달성됩니다.
ssh -D 3128 localhost
ssh -R 3128:localhost:3128 target
이 방법으로 대상에는 SSH 클라이언트에 대한 SOCKS 터널이 있습니다.
내가 한 것은 대상에 로그인하는 동안 SOCKS 터널 생성이 투명하게 처리되도록 중간 체인을 통해 원격 대상에 도달하기 위해 고전적인 ssh 체인 방법을 사용하는 것입니다. -W는 ClearAllForwardings를 의미하므로 첫 번째 ProxyCommand + nc 트릭은 필수입니다.
답변
OpenSSH를 사용하여 리버스 양말 터널을 제공하는 기능이 없으므로 “원격”시스템에서 양말 프록시를 제공하는 ssh 명령을 실행해야합니다.
원격 시스템이 로컬 시스템으로 ssh 할 수없는 경우 먼저 로컬에서 원격으로 ssh 연결을 작성하여 포트 22를 2222로 전달하십시오. 그런 다음 원격 시스템 은 포트 2222의 로컬 시스템으로 ssh 할 수 있습니다 .
답변
local$ ssh -R 1080 remote
remote$ curl --socks5 localhost https://example.com
OpenSSH 7.6부터
ssh (1) : 역동적 전달을 지원합니다. 이 모드에서 ssh는 SOCKS4 / 5 프록시 역할을하며 원격 SOCKS 클라이언트가 요청한 대상으로 연결을 전달합니다. 이 모드는 -R 및 RemoteForward 옵션에 대해 확장 구문을 사용하여 요청되며 클라이언트에서만 구현되므로 서버를 지원하도록 업데이트 할 필요가 없습니다.