使用 RSH 通过本地网络进行 rsync 返回“权限被拒绝(公钥)”

使用 RSH 通过本地网络进行 rsync 返回“权限被拒绝(公钥)”

我在同一本地网络的两台机器上安装了 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远程系统上的文件中。

相关内容