SSH 역방향 터널을 게이트웨이로 사용하여 NAT에서 머신에 연결

SSH 역방향 터널을 게이트웨이로 사용하여 NAT에서 머신에 연결

포트 전달 없이 NAT를 사용하여 네트워크에 있는 컴퓨터에 액세스하고 싶습니다.

포트 전달 없는 NAT 뒤에 있는 "off" 머신을 RaspberryB라고 합니다. 이 머신은 포트 22의 포트 전달로 인해 연결할 수 있고 로컬 IP가 192.168.1.34인 머신(RaspberryA)에 대한 역방향 터널을 생성합니다.

그래서 RaspberryB에서 명령을 시작했습니다. ssh -R 43022:localhost:22 userA@addressRaspA

RaspberryA에서는 역방향 터널을 통해 다시 연결할 수 있습니다.

ssh userB@localhost -p 43022

효과가있다.

동일한 네트워크에 있는 PC에서 RaspberryA에 연결한 다음 RaspberryB에 연결할 수 있습니다(Windows에서는 퍼티를 사용하고 있지만 중요하지 않다고 생각합니다).

ssh [email protected] <<-- after this i'm inside RaspberryA

ssh userB@localhost -p 43022 <<-- after this i'm inside RaspberryB

이제 필요한 것을 달성했습니다. 다른 네트워크의 PC에서 raspberryB에 액세스합니다.

하지만, 저는 이 작업을 하나의 게시물로 수행하고 싶습니다... PC에서 다음 명령을 실행하는 경우 원합니다.

ssh [email protected] -p 43022

thgen 내 컴퓨터는 RaspberryA의 포트 43022에 연결되어야 하며, 이는 RaspberryB의 포트 22로 리디렉션되므로 단일 명령으로 rapsberryB에 연결할 수 있어야 합니다.

하지만 이해한다"네트워크 오류: 연결이 거부되었습니다."

(RaspA에서) 포트 43022에서 수신 대기하도록 ssh를 구성하면 PC가 연결할 수 있기 때문에 이것이 방화벽 문제라고 생각하지 않습니다.iptables-S산출

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain f2b-sshd (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

그럼 내가 뭘 잘못했나요? RaspberryA와 동일한 네트워크에 있는 PC가 마지막 명령으로 raspberryB에 연결할 수 없는 이유는 무엇입니까?

편집: 언급하는 것을 잊었습니다. ssh도 열어 보았습니다. ssh -R 1.1.1.1:43023:localhost:22 pi@addressRaspA 1.1.1.1이 게이트웨이를 생성하는 데 올바르게 사용되었는지 또는 원격 호스트가 네트워크의 모든 PC에 연결을 시도하는지 잘 모르겠습니다. 그럼에도 불구하고 "연결이 거부되었습니다"라는 메시지가 계속 표시됩니다.

편집 2: 네트워크의 모든 PC에서 raspberryB에 액세스할 수 있기를 원하므로 특정 IP에 대한 원격 터널을 만드는 것은 옵션이 아닙니다. 네트워크 외부에서도 작동하는 경우 raspberryA 네트워크의 라우터에서 포트 전달을 켤 수 있습니다.

네트워크 다이어그램

답변1

해결됨: 내가 만든 오류:

첫째, 1.1.1.1은 "모든 IP"가 아닙니다. 0.0.0.0 네.

둘째, SSH 구성에서 "GatewayPorts"를 활성화해야 합니다.

그래서:

  1. /etc/ssh/sshd_config를 편집하고 설정합니다.GatewayPorts clientspecified
  2. 다음 명령을 사용하여 역방향 터널을 시작하십시오. ssh -fN -R 0.0.0.0:43022:localhost:22 rasbberryA@addressRaspA

관련 정보