从外部到 Raspberry Pi 上的 ppp0 接口(4G 调制解调器)的 SSH 连接问题(超时)

从外部到 Raspberry Pi 上的 ppp0 接口(4G 调制解调器)的 SSH 连接问题(超时)

我在从外部与具有 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 连接发送的,这显然会导致它们在测试机上被拒绝(如果它们到达)。

答案2

您应该指定一个不起眼的端口,重新启动 SSH 守护进程,然后重试。


此外,您的防火墙完全打开......对此没有评论,但您不需要添加任何接受规则。


我个人建议使用自定义端口50000以上。阅读维基百科为了不再犯同样的错误。


无论如何,我建议你看看我对安全SE的回答加强您的安全性。

相关内容