ssh 断开连接 packet_write_wait: Connection to x.x.x.x port 22: Broken pipe

本文介绍了当SSH连接服务器一段时间后出现Write failed: Broken pipe错误的原因及两种解决方法:一是通过命令行设置ServerAliveInterval参数;二是修改服务器上的sshd_config文件。

解决

  用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入时会有一段时间没有响应,然后就出现错误提示:Write failed: Broken pipe
只能重新用 ssh 命令进行连接。

  解决方法:

方法一:使用以下的命令:$ ssh -o ServerAliveInterval=60 user@sshserver

  这里的user是指你的 git 用户名,sshserver 是指报错中的 IP。

方法二:在服务器的 /etc/ssh/sshd_config 中添加如下的配置:

ClientAliveInterval 60
在使用SSH连接远程服务器时,如果出现“Bad packet length”和“message authentication code incorrect”的错误提示,通常意味着SSH协议的数据包长度校验失败或认证过程出现问题。 ### 原因分析 1. **Bad packet length**: - SSH协议在通信过程中依赖于精确的数据包长度信息。当接收端读取到一个不符合预期的包长度值时,就会报出“Bad packet length”错误。 - 这种情况常见于SSH会话中意外插入了额外的文本输出,例如服务器端的shell启动脚本(如`.bashrc`、`.profile`等)在非交互式登录时也输出内容[^2]。这些输出内容会被误认为是SSH协议的一部分,导致解析错误。 2. **Message authentication code incorrect**: - 此错误表明SSH连接两端的消息认证码不一致,可能是由于数据传输过程中的损坏或中间人攻击引起的。 - 在某些情况下,这可能是因为SSH密钥指纹未被正确添加至信任列表,或者网络不稳定导致的数据包丢失或篡改。 ### 解决方案 1. **检查并修改服务器端的shell配置文件**: - 登录到远程服务器,编辑相关的shell配置文件(如`.bashrc`、`.bash_profile`、`.zshrc`等),确保任何非交互式的输出都被禁止。 - 可以通过添加以下条件判断来避免在非交互式登录时输出内容: ```bash # 如果不是交互式shell,则退出 case $- in *i*) ;; *) return;; esac ``` - 保存更改后,重新尝试SSH连接,看问题是否解决[^2]。 2. **确认SSH密钥指纹**: - 当首次连接一个新的主机时,系统会提示用户确认该主机的密钥指纹,并询问是否继续连接。此时应输入`yes`以将该主机添加至本机SSH可信列表。 - 如果之前已经添加过该主机但仍然遇到问题,可以手动删除`~/.ssh/known_hosts`文件中的相关条目,然后再次尝试连接,以便重新添加正确的主机信息[^1]。 3. **更新SSH客户端和服务端软件**: - 确保使用的SSH客户端和服务端都是最新版本,因为旧版本可能存在已知的安全漏洞或bug,可能导致此类问题的发生。 - 对于Linux系统,可以通过包管理器(如`apt-get`、`yum`等)进行更新;对于Windows系统,可以考虑安装OpenSSH的官方发行版。 4. **网络问题排查**: - 检查本地与远程服务器之间的网络连接稳定性。可以使用`ping`命令测试基本连通性,使用`traceroute`或`tracert`命令查看路由路径是否存在异常。 - 如果怀疑DNS解析存在问题,可以尝试直接使用IP地址进行SSH连接,或者按照特定方法更新DNS缓存和hosts文件[^5]。 5. **调整SSH配置**: - 编辑`/etc/ssh/sshd_config`文件,确保没有不必要的选项开启,特别是那些可能影响SFTP功能的设置。 - 如需支持SFTP服务,应启用`internal-sftp`子系统,并正确配置`ChrootDirectory`、`ForceCommand`等参数,以保证SFTP用户的环境隔离和安全[^4]。 6. **防火墙和安全组设置**: - 检查是否有防火墙规则或云服务商的安全组设置阻止了SSH端口(默认为22)的流量。 - 确认所有必要的端口都已开放,并且没有其他限制策略干扰正常的SSH通信。 通过上述步骤,大多数由“Bad packet length”和“message authentication code incorrect”引发的问题都可以得到有效解决。如果问题依旧存在,建议进一步检查日志文件(如`/var/log/auth.log`)获取更详细的错误信息,以便定位具体原因。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值