我在从外部与具有 USB 4G 调制解调器作为接口的 Raspberry Pi 建立 SSH 连接时遇到困难。尝试使用 ssh 连接时出现超时:
ssh -l pi ccc.ccc.ccc.ccc -p 22
ssh_exchange_identification: read: Operation timed out
接口显然是 ppp0 并且具有可以从外部 ping 到的正确 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
来自其他机器的 ping 工作正常,但 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
我尝试添加一些不起眼的端口 7654,以防 22 被 ISP 或其他东西阻止
即使一般策略设置为“接受”,我也尝试添加特定的防火墙规则:
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
好吧,问题出在路由上。当我退出试验并从 Raspberry 插入以太网电缆时,它开始工作。幸好我确实尝试了最后一次登录尝试。我不知道问题是出在 Raspberry 端还是出在我用于测试的机器上。测试机通过以太网插入同一个 Raspberry,我想回复数据包是通过以太网而不是 ppp 连接发送的,这显然会导致它们在测试机上被拒绝(如果它们到达)。