iptables 전달을 사용하여 SSH 역방향 터널을 만드는 방법은 무엇입니까?

iptables 전달을 사용하여 SSH 역방향 터널을 만드는 방법은 무엇입니까?

홈 네트워크에 서버가 있고(포트 포워딩 불가) WAN에 VPS가 있습니다. 특정 포트에 대한 요청이 필요합니다.도착하다, 내 홈 서버로 전달되는 VPS가 아닙니다. SSH 터널이 있고 localhostVPS 에 요청을 보내면 제대로 작동합니다. 그러나 인터넷에서 VPS로 전달된 요청이 localhost내 홈 서버로 터널링되기를 원합니다. 그리고 양방향 도로여야 합니다.

나는 보았다이것질문이 있지만 나에게는 작동하지 않습니다. 제가 뭔가 잘못하고 있는 것 같아요.

내 정확한 프로세스: 내 홈 서버에서 다음 명령을 실행하여 터널을 설정합니다
.a

ssh -v -N -R 2222:localhost:22 [email protected]

b서버(VPS)에서 다음 명령을 실행합니다.

iptables -t nat -A PREROUTING -p tcp --dport 2223 -j DNAT --to-destination 127.0.0.1:2222

ssh다른 컴퓨터에서 시도해 보세요 .

ssh [email protected] -p 2223

설정했지만 GatewayPorts yes여전히 sshd_config같은 문제가 발생합니다.
ssh: 호스트 server-b.com 포트 2223에 연결 중: 연결이 거부되었습니다..

답변1

서버 에 설정 GatewayPorts yes합니다 . IP를 명시적 으로 언급 하거나 서버에 역방향 터널을 생성합니다 . 이 방법으로 서버의 sshd는 공개 연결도 허용합니다.AllowTcpForwarding yessshd_configbGatewayPorts clientspecified0.0.0.0*ab

ssh -NTR *:2222:localhost:22 [email protected]

그렇지 않으면 sshd는 .NET Framework와 마찬가지로 루프백 인터페이스만 수신합니다 GatewayPorts no.

이제 ssh 다른 머신에서 포트로 2222:

ssh [email protected] -p 2222

a인증 후 서버에 로그인됩니다. 전달을
설정할 필요가 없습니다 iptables. 그런데 가능하다면 사용자가 root원격으로 로그인하는 것을 방지하세요.


옵션을 설정하지 않으려면 다른 포트 GatewayPorts에서 트래픽을 전달해야 합니다 .2223localhost:2222

  • iptables이 작업은 서버에서 수행할 수 있습니다 b.

    iptables -t nat -I PREROUTING -p tcp -m tcp --dport 2223 -j DNAT --to-destination 127.0.0.1:2222
    

    * REDIRECT동일한 인터페이스에 한함

    하지만loopback인터페이스 로의 경로다음의 경우를 제외하고는 허용되지 않습니다:

    echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/route_localnet
    

    이제 ssh다른 머신에서 포트로 2223:

    ssh [email protected] -p 2223
    

2223또 다른 옵션은 2222.sshsocatnetcat*inetd

  • 서버에서 다음을 b사용하십시오 socat.

    socat TCP-LISTEN:2223,fork TCP:127.0.0.1:2222
    
  • 또는 다음을 사용하여 netcat:

    nc -l -p 2223 -c "nc 127.0.0.1 2222"
    
  • 또는 다음을 사용하여 ssh:

    ssh -4gfNTL 2223:localhost:2222 localhost
    

위의 모든 방법을 역터널링과 결합하여 다음을 만들 수 있습니다.이중 전달a서버의 단계:

ssh -TR *:2222:localhost:22 [email protected] "ssh -4gfNTL 2223:localhost:2222 localhost"

관련 정보