我在本地和远程之间设置了ssh密钥对。
ssh登录无需输入密码
即可运行user@local ~$ssh -v remote
..
debug1: Authentications that can continue: publickey..
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Authentication succeeded (publickey).
..
debug1: Entering interactive session.
user@remote ~$
ssh上的rsync在非rsyncd模式下工作(注意单个:),但问题是在这种模式下不咨询rsyncd.conf。
user@local ~/bin$rsync -av -e "ssh -v -l user@remote" user@remote:/dir
..
debug1: Authentications that can continue: publickey..
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/punkish/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Authentication succeeded (publickey).
..
debug1: Entering interactive session.
debug1: Sending command: rsync --server --sender -vlogDtpre.iLs . /dir
receiving file list ... done
..
user@local ~/bin$
rsyncd模式下ssh上的rsync失败(注意双::),并请求密码。
user@local ~/bin$rsync -av -e "ssh -v -l user@remote" user@remote::module
..
debug1: Authentications that can continue: publickey..
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/punkish/.ssh/id_rsa
debug1: Authentications that can continue: publickey..
debug1: Next authentication method: keyboard-interactive
Password:
我做错了什么?我的目标是使用远程计算机上的rsyncd.conf运行rsync。
答案 0 :(得分:2)
你确定ssh的-l标志在这里吗?我认为它应该是ssh -l user remote
或ssh user@remote
。
我对rsync及其ssh
的使用一无所知,所以我不能说它为什么在一个版本中工作而在另一个版本中不起作用。
答案 1 :(得分:1)
我遇到了类似的问题,并且在我的设置中遇到了一个主要的区别,它看起来与你的相同。
在您的ssh连接上,您有一个
的用户密钥debug1: Offering public key: /Users/user/.ssh/id_rsa
但是在rsync连接上它是
debug1: Offering public key: /Users/punkish/.ssh/id_rsa
您需要确保为运行rsync命令的用户生成密钥文件。
答案 2 :(得分:0)
这花了我几个小时才最终追踪,所以希望这将有助于将来的其他人。问题确实如乔纳森在答案中指出的那样。您需要确保使用正确的SSH密钥。在我的情况下,直接使用ssh时,使用了正确的密钥。但是,rsync找不到正确的密钥。
要解决此问题,请按以下方式调用rsync:
rsync -avzu -e "ssh -i FULL_PATH_TO_SSH_PRIVATE_KEY" --delete SOURCE USER@HOST:/DEST_PATH
诀窍是通过ssh传递-i param来指定密钥。