포트 전달 없이 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"를 활성화해야 합니다.
그래서:
- /etc/ssh/sshd_config를 편집하고 설정합니다.
GatewayPorts clientspecified
- 다음 명령을 사용하여 역방향 터널을 시작하십시오.
ssh -fN -R 0.0.0.0:43022:localhost:22 rasbberryA@addressRaspA