我在同一本地网络的两台机器上安装了 rsync。我正在尝试同步它们两个之间的 /var/www/html/ 文件夹。
我在机器 A 上创建了一个名为“rsync”的用户
然后我在机器 B 上运行此命令:
rsync --rsh=rsh [email protected]:/var/www/html/ /var/www/html/
...并收到此错误:
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(235) [Receiver=3.1.2]
当我的命令要求使用 rsh 而不是 ssh 时,为什么会出现“publickkey”相关错误?由于它是内部网络,没有窃听风险,因此我想使用 rsh 来简化事情。
谁能告诉我为了让它正常工作我缺少哪一步?
(一些额外的说明:我知道我需要其他 rsync 标志,但我已经从这个开始了。我也尝试过[电子邮件受保护]并得到了我所期待的错误。所以我知道它至少正在尝试连接到正确的地方。)
答案1
您rsh
安装了实际的客户端吗?或者你是/usr/bin/rsh
一个符号链接/usr/bin/ssh
?这是当今相当典型的设置。
例如,在 Debian 上rsh
,通过替代系统,是一个符号链接ssh
:
$ ls -lF /usr/bin/rsh
lrwxrwxrwx 1 root root 21 May 18 2018 /usr/bin/rsh -> /etc/alternatives/rsh*
$ ls -lF /etc/alternatives/rsh
lrwxrwxrwx 1 root root 12 May 18 2018 /etc/alternatives/rsh -> /usr/bin/ssh*
$ update-alternatives --display rsh
rsh - auto mode
link best version is /usr/bin/ssh
link currently points to /usr/bin/ssh
link rsh is /usr/bin/rsh
slave rsh.1.gz is /usr/share/man/man1/rsh.1.gz
/usr/bin/ssh - priority 20
slave rsh.1.gz: /usr/share/man/man1/ssh.1.gz
如果我想要一个实际的rsh
客户端,我必须安装rsh-client
会自动更新替代链接的软件包。
例如我刚刚安装rsh-client
在虚拟机上进行测试:
# update-alternatives --display rsh
rsh - auto mode
link best version is /usr/bin/netkit-rsh
link currently points to /usr/bin/netkit-rsh
link rsh is /usr/bin/rsh
slave rsh.1.gz is /usr/share/man/man1/rsh.1.gz
/usr/bin/netkit-rsh - priority 100
slave rsh.1.gz: /usr/share/man/man1/netkit-rsh.1.gz
/usr/bin/ssh - priority 20
slave rsh.1.gz: /usr/share/man/man1/ssh.1.gz
PS:rsh
是过时的、不安全的垃圾。无论如何,你不应该使用它,即使是在本地“完全可信且值得信赖”的网络上。代替使用ssh
。只需花几分钟创建 ssh 密钥对(如果您还没有)并将公钥安装在~/.authorized_keys
远程系统上的文件中。