shell-A主机ssh远程调用B主机rsync命令同步文件至C主机出现--Permission denied
作者: 风吹蛋生丶
1. 前言
编写shell脚本,A主机通过普通用户ssh远程命令调用了B主机的rsync命令(实际使用ssh协议),同步B主机的文件至C主机 (C主机已部署rsync服务端)
但执行报错 Permission denied
2. 问题复现
A主机为 192.168.1.10
B主机为 192.168.1.20
C主机为 192.168.1.30 (已启动rsync服务器端,用户为test)
192.168.1.10 ~]# ssh 192.168.1.20 "rsync 1.sh yuhui@192.168.1.30:/data/test/"
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]
在B主机单独执行rsync,可正常传输
192.168.1.20 ~]# rsync 1.sh test@192.168.1.30:/data/test/
test@192.168.1.30's password:
3. 原因
问题出现原因是因为:
rsync使用的是ssh协议传输文件传的时候需要输入密码,ssh远程调用命令是非交互模式,造成了密码不正确返回权限拒绝报错
ssh 登录验证模式:使用 ssh 协议作为基础进行用户身份认证,然后进行数据同步。 rsync xx.txt test@192.168.1.30:/data/test
rsync 登录验证模式:使用 rsync 协议进行用户身份认证(非系统用户),然后进行数据同步。 rsync -avz xx.txt rsync://test@192.168.1.30/data
# 不输入正确的密码 直接回车跳过
192.168.1.20 ~]# rsync 1.sh test@192.168.1.30:/data/test/
test@192.168.1.30's password:
Permission denied, please try again.
test@192.168.1.30's password:
Permission denied, please try again.
test@192.168.1.30's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]
报了三次权限拒绝,与错误输入密码三次报错退出一致, scp一样
4. 解决办法
当前rsync使用的是ssh协议传输文件,那么就需要做ssh协议的免密钥.
192.168.1.20 ~]# ssh-keygen
192.168.1.20 ~]# ssh-copy-id test@192.168.1.30
再次执行rsync命令, 成功传输