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命令, 成功传输

posted @ 2020-12-08 11:38  风吹蛋生丶  阅读(920)  评论(0编辑  收藏  举报