最近我在家里用 Arch Linux 设置了我的 Raspberry Pi 3 服务器,并连接到了我家里的路由器。但我注意到 ssh 连接经常会出现超时错误,而且很少能正常工作。(ssh: connect to host ***.**.**.** port 22: Operation timed out
)我不禁想知道是什么原因造成的。当 ssh 出现连接超时时,我仍然可以 ping 我的机器。IP 地址是 192.168.1。**(我在路由器上为该 Pi 保留了固定 IP)
这个问题似乎不能通过简单地重启我的 Pi 来解决。我查看了我的 Pi 服务器的 ssh 日志,Pi 从未记录过连接超时的尝试。这是我的 Mac 和 Linux 机器上的情况。不过,我在这两台机器上连接到我在美国租用的托管服务器时都没有问题。这似乎也不仅仅发生在长时间不活动之后。因为经常发生这样的情况:前一秒我能够 ssh 并得到密码提示,下一秒 ssh 客户端通知我超时了。
我的设置:两个客户端都通过无线方式连接到路由器,而 Pi 通过以太网连接。
非常感谢您的帮助!
更新 更多信息:
我已经能够使用 iPhone 的客户端软件 Terminus 非常稳定地通过 ssh 进入我的机器。此外,很多时候我的 Mac 上只有一个 ssh 连接处于活动状态,而当我尝试发起另一个完全相同的请求时,它会显示超时错误。所以也许这不是 Pi 上的 sshd 出现故障?这可能是我的路由器在耍花招吗?(我有一个 Netgear 无线路由器)通过拦截我的 ssh 请求。
答案1
这可能是由 ssh 会话本身的超时引起的,您可以编辑 ~/.ssh/config 中的客户端 SSH 配置文件并添加以下行:
ServerAliveInterval 120
这将每 120 秒向您的 SSH 连接发送一个“空数据包”以保持它们处于活动状态。