如何通过SSH连接EC2时抑制输出以解决rsync协议不兼容错误?
解决rsync结合EC2 Instance Connect时的协议版本不匹配问题
问题根源
rsync依赖干净的SSH shell环境,当SSH连接EC2实例时输出的Last login记录和Amazon Linux 2的欢迎banner,会干扰rsync的协议通信,导致出现protocol version mismatch错误。
解决方法
方法一:临时屏蔽输出(无需修改服务器配置)
在rsync命令中通过SSH参数直接抑制多余输出,适合临时使用:
rsync -avz -e "ssh -o LogLevel=QUIET -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" /本地文件路径 ec2-user@<实例ID>:/远程目标路径
LogLevel=QUIET:关闭SSH的Last login记录及大部分冗余输出- 后两个参数适配Instance Connect,避免主机密钥检查的额外提示
方法二:永久修改服务器配置
1. 关闭Last login显示
编辑SSH服务配置文件:
sudo vi /etc/ssh/sshd_config
找到PrintLastLog项,修改为:
PrintLastLog no
重启SSH服务生效:
sudo systemctl restart sshd
2. 移除系统欢迎banner
Amazon Linux 2的欢迎信息由/etc/motd或/etc/update-motd.d/目录下的脚本生成,二选一操作即可:
- 方式A:直接清空
/etc/motd
sudo echo "" > /etc/motd
- 方式B:禁用生成banner的脚本
sudo mv /etc/update-motd.d/30-banner /etc/update-motd.d/30-banner.disabled
内容的提问来源于stack exchange,提问作者Sebastian N
相关产品推荐
相关产品推荐

