USB 4G 모뎀을 인터페이스로 사용하는 Raspberry Pi에 외부적으로 SSH 연결을 설정하는 데 문제가 있습니다. SSH를 사용하여 연결을 시도할 때 시간 초과가 발생합니다.
ssh -l pi ccc.ccc.ccc.ccc -p 22
ssh_exchange_identification: read: Operation timed out
인터페이스는 분명히 ppp0이고 외부에서 핑할 수 있는 올바른 IP 주소를 가지고 있습니다. 다음은 ifconfig 목록입니다(IP 주소가 난독화됨).
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet ccc.ccc.ccc.ccc netmask 255.255.255.255 destination 10.64.64.64
ppp txqueuelen 3 (Point-to-Point Protocol)
RX packets 401 bytes 377702 (368.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 336 bytes 27694 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
다른 컴퓨터의 핑은 제대로 작동하지만 ssh는 작동하지 않고 시간이 초과됩니다. tcpdumps를 사용하여 인터페이스를 모니터링하면 SSH 클라이언트에 연결될 때 일부 수명이 표시됩니다.
sudo tcpdump -i ppp0 port 22
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
09:18:26.764806 IP yyy.yyy.yyy.yyy.53681 > ccc.ccc.ccc.ccc.ssh: Flags [S], seq 2675400197, win 65535, options [mss 1386,nop,wscale 5,nop,nop,TS val 672664602 ecr 0,sackOK,eol], length 0
그 이후에는 생명이 없고 /var/log/auth에 로그나 메시지도 없고 아무것도 없습니다. sshd 로그 수준이 DEBUG3으로 설정되었습니다.
SSHD 구성 파일은 다음과 같습니다.
Port 22
Port 7654
AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
# Ciphers and keying
#RekeyLimit default none
# Logging
SyslogFacility AUTH
LogLevel DEBUG3
내 ISP 등으로 인해 22번이 차단된 경우를 대비해 모호한 포트 7654를 추가해 보았습니다.
일반 정책이 "수락"으로 설정되어 있는데도 특정 방화벽 규칙을 추가해 보았습니다.
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:7654 ctstate NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:ssh ctstate ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:7654 ctstate ESTABLISHED
라우팅 테이블은 다음과 같습니다.
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.64.64.64 0.0.0.0 UG 0 0 0 ppp0
10.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
bbb.bbb.bbb.0 0.0.0.0 255.255.252.0 U 202 0 0 eth0
해당 bbb는 로컬 이더넷입니다.
운이 좋지 않습니다. 연결을 시도할 때 여전히 시간 초과가 발생합니다. localhost에서 이 IP 주소로의 SSH는 정상적으로 작동합니다.
무엇이 잘못되고 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까? 혼란스럽게도 최소한 인터페이스로 전송된 ICMP 메시지를 수신하고 내부 SSH도 작동합니다. 외부적으로도 외부에서 SSH를 사용하여 연결할 때 인터페이스는 여전히 약간의 수명을 가지고 있지만 여전히 작동하지 않습니다.
답변1
문제는 라우팅에 있습니다. 실험을 종료하고 라즈베리의 이더넷 케이블을 연결하자 작동이 시작되었습니다. 운 좋게도 마지막 로그인 시도를 시도했습니다. 문제가 라즈베리 측에 있는지, 아니면 테스트에 사용하는 컴퓨터에 있는지 모르겠습니다. 테스트 머신은 이더넷을 통해 동일한 라즈베리에 연결되어 있으며 응답 패킷이 ppp 연결이 아닌 이더넷을 통해 전송되는 것으로 생각됩니다. 이로 인해 패킷이 도착하면 테스트 머신에서 분명히 거부될 것입니다.
답변2
모호한 포트를 지정해야 합니다.SSH 데몬 다시 시작, 다시 시도해 보세요.
또한 방화벽이 완전히 열려 있습니다. 이에 대해 코멘트는 없지만 수락 규칙을 추가할 필요는 없습니다.
개인적으로 사용을 추천드려요사용자 정의 포트 50000 이상. 읽다위키피디아같은 실수를 반복하지 않기 위해서입니다.
아무튼 한번 보시길 권합니다Security SE에 대한 나의 답변보안을 강화하세요.