Ash*_*hah 15 ssh port-forwarding macos
几个月来我一直在使用 ssh 访问远程服务器,但最近我一直无法建立可靠的连接。有时我无法登录并收到消息“通过端口 22 重置连接”,当我可以登录时,我会在几分钟内收到错误消息“client_loop: send disconnect: Broken pipe”(即使终端未空闲)。
我的 ~/.ssh/config 文件有:
Host *
ServerAliveInterval 300
ServerAliveCountMax 2
TCPKeepAlive yes
Run Code Online (Sandbox Code Playgroud)
我的 /etc/ssh/sshd_config 文件有:
#ClientAliveInterval 300
#ClientAliveCountMax 3
Run Code Online (Sandbox Code Playgroud)
我最近将我的 xfinity 计划升级到了更快的速度,然后问题就开始发生了。但 xfinity 坚持认为问题出在我这边。请注意,我的室友也有同样的 ssh 问题...
有什么我遗漏的吗?任何帮助将不胜感激!(我在 Mac 上运行)
小智 15
David的回答是可以的,但是下面会解释更全面的解决方案。
\n您可以在客户端或服务器上解决此问题。
\n你怎么知道在哪里做呢?
\n如果您通过 SSH 连接到多个服务器,请在您的计算机上设置它。
\n如果您是系统管理员\n并且有几个用户抱怨 SSH 连接频繁断开,\n您可以在服务器上进行设置。
\n连接到服务器时,使用以下-o选项:
ssh -o ServerAliveInterval=600 username@example.com\nRun Code Online (Sandbox Code Playgroud)\n该值600代表600\xc2\xa0秒;即\xc2\xa010\xc2\xa0分钟。
或者,将其添加到您的 ssh 配置文件中:
\ntouch ~/.ssh/config\nRun Code Online (Sandbox Code Playgroud)\nchmod 600 ~/.ssh/config\nRun Code Online (Sandbox Code Playgroud)\necho "ServerAliveInterval 600" >> ~/.ssh/config\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6\xc2\xa0 或使用编辑器。/etc/ssh/sshd_config。ClientAliveInterval和设置ClientAliveCountMax为所需的值。例如,ClientAliveInterval=200和ClientAliveCountMax=3表示服务器将在 200 秒后发送一条活动消息。如果客户端没有响应,它将在 400 秒后再次发送一条活动消息。如果客户端仍然没有响应,则会在 600 秒后发送另一条存活消息。\xc2\xa0\n如果\xc2\xa0仍然没有响应,则 SSH 连接将被断开。
来源:修复 SSH 连接的损坏管道错误\nat\xc2\xa0 Linux\xc2\xa0Handbook。
\nDav*_*rom 13
我通过编辑文件 ~/.ssh/config 解决了同样的问题:
Host *
ServerAliveInterval 20
TCPKeepAlive no
Run Code Online (Sandbox Code Playgroud)
动机:
TCPKeepAlive no表示“不向服务器发送 keepalive 消息”。如果设置了相反的 TCPKeepAlive yes,则客户端向服务器发送 keepalive 消息并需要响应以维持其连接结束。这将检测服务器是否出现故障、重新启动等。这样做的问题是,如果客户端和服务器之间的连接在短时间内中断(由于网络连接不稳定),这将导致保持活动消息失败,客户端将用“断管”结束连接。
设置TCPKeepAlive no告诉客户端只假设连接仍然良好,直到用户请求证明否则,这意味着当您的 ssh 术语在后台闲置时临时连接中断不会终止连接。