SSH 포트 전달을 디버깅하는 방법

SSH 포트 전달을 디버깅하는 방법

이것은 확장입니다어디서나 내 집 컴퓨터에 액세스할 수 있는 SSH 포트 포워딩

거기에 언급된 사항을 시도했지만 ssh컴퓨터가 작동하지 않습니다.

Netgear 라우터 포트 전달 설정:

Start Port: 22
End Port: 22
Server IP Address: IP address of by FreeBSD box

/etc/ssh/sshd_conf내 FreeBSD 상자:

PasswordAuthentication yes
AllowUsers root
X11Forwarding yes
AllowTcpForwarding yes

연결을 시도하는 방법:

등록 dyndns.com하고 외부 IP 주소에 매핑된 URL을 받았습니다.

내 홈 네트워크의 다른 컴퓨터에서 다음을 수행합니다. ssh -l root my_dyndns_ip 시간이 초과됩니다.

반면에 나는 my_dyndns_url성공적으로 핑을 할 수 있다.

디버그:

ssh어디에서나 액세스 할 수 있도록 이 문제를 해결하려면 어떻게 해야 합니까 my_dnydns_url?

Netgear 라우터의 로그를 살펴보았지만 SSH 시도 실패 후 라우터에 로그인 정보가 생성되지 않았습니다.

저도 살펴봤지만 /var/log/messages아무 것도 찾을 수 없습니다.

편집: 0 @jasonwryan이 제안한 대로 verbose 모드에서 ssh를 실행합니다.

이상한 점을 발견했습니다. ssh를 통해 dyndns.com에서 제공한 URL에 액세스했을 때 Whatismyip.com에서 얻은 IP 주소와 다른 IP 주소에 연결을 시도했습니다. 이게 잘못된 것 아닌가요?

편집: 1 이제 dyndns 문제가 해결되었습니다.

이제 ssh를 시도하면 오류가 발생하면서 시간이 초과됩니다.연결 시간이 초과되었습니다

편집: 2 iptables나 NAT가 이것과 관련이 있나요?

편집: 3 저는 디버그 메시지를 캡처하는 ssh것부터 시작했습니다.-d option

WLAN의 다른 컴퓨터에서 freebsd 상자로 SSH를 통해 연결하면 제대로 작동하고 로그를 볼 수 있습니다.

그러나 외부 IP(내 freebsd 상자로 전달될 것으로 예상됨)로 ssh를 시도하면 로그도 표시되지 않습니다. 즉, 요청이 freebsd 상자에 도달하지도 않는다는 의미입니다. 그리고 시간이 초과되었습니다.

답변1

귀하의 문제는 포트 전달에 있는 것이 아니라 라우터의 NAT 구성에 있는 다른 옵션에 있는 것 같습니다.

먼저, LAN IP를 사용하는 경우 네트워크의 다른 컴퓨터에서 SSH를 성공적으로 수행할 수 있는지 확인하세요. 이렇게 하면 SSH가 제대로 작동하는지 확인할 수 있습니다.

2. 다른 컴퓨터에서 테스트외부 네트워크공용 IP를 사용하세요. 이렇게 하면 포트 전달이 제대로 작동하는지 확인할 수 있습니다.

세 번째, 동일한 머신에서 테스트외부 네트워크그리고 DynDNS URL을 사용하세요. 이렇게 하면 DynDNS가 제대로 작동하게 됩니다.

이 모든 것이 성공하면 구성에 아무런 문제가 없습니다(올바른 것으로 가정). 문제는 단순히 (직접 또는 DynDNS를 통해) 공용 IP에 액세스하는 것입니다.네트워크 내부. 이는 라우터에 다음이 있어야 함을 의미합니다.NAT 반사가능한 경우 내부 요청을 공용 IP에 대한 외부 요청으로 라우팅하도록 설정합니다.

답변2

SSHD 서버가 포트 22에서 수신 대기 중인 경우 다음을 추가해 보세요.

Port 22

귀하의 구성에.

그래도 작동하지 않으면 1024보다 높은 포트를 전달해 보십시오(일부 ISP는 1024보다 낮은 포트에서 비상업적 가입자 트래픽을 허용하지 않습니다). 또한 이렇게 하면 동일한 값을 반영하도록 방금 말한 conf의 행을 변경해야 합니다.

답변3

SSH 포트를 443으로 변경해 보세요. 이 포트에 연결할 수 있으면 클라이언트와 홈 PC 사이에 프록시가 있습니다.

방화벽에서 삭제 및 전달된 모든 패킷을 기록하여 잘못된 전달 규칙을 찾을 수 있습니다.

nmap(또는 기타 도구)(포트 < 1024)을 사용하여 외부 IP를 스캔해 보십시오. 방화벽 로깅에는 끊어진 연결이 표시되어야 하며 클라이언트 측에서는 열린 포트가 표시되어야 합니다.

클라이언트에서 가정용 PC까지 Traceroute - 그 사이에 예상치 못한 호스트가 있고 포트를 올바르게 전달하고 있습니까?

답변4

tcptraceroute를 사용하여 원격 포트에 먼저 액세스할 수 있는지 디버깅해 보세요. 일부 시스템에 포트가 차단된 경우 출력에서 ​​이를 확인할 수 있습니다. 두 시스템 모두에서 열려 있는 포트/연결을 확인하려면 netstat -atun을 사용해 보십시오.

관련 정보