如何在 UNIX/Linux 上使用 SSH 在没有密码的情况下设置 Rsync?

23 linux ssh rsync

如何在不提供任何密码的情况下在两台主机之间设置 rsync?

小智 39

以下是来自The Geek Stuff的文章:

1. 通过 ssh 测试 rsync(使用密码):

执行 rsync 以确保它要求输入您在远程服务器上的帐户的密码,并成功将文件复制到远程服务器。

以下示例将本地文件夹同步/home/test 到远程文件夹/backup/test(在192.168.200.10服务器上)。

这应该会询问您在远程服务器上的帐户密码。

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Run Code Online (Sandbox Code Playgroud)

2. ssh-keygen 生成密钥。

现在进行设置,ssh以便在您执行 ssh 时它不会要求输入密码。ssh-keygen在本地服务器上使用以生成公钥和私钥。

$ ssh-keygen
Run Code Online (Sandbox Code Playgroud)

输入密码(空表示没有密码):

再次输入相同的密码: 注意:当它要求您输入密码时只需按回车键,不要在此处输入任何密码。

3. ssh-copy-id 复制公钥到远程主机

使用ssh-copy-id, 将公钥复制到远程主机。

ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.200.10
Run Code Online (Sandbox Code Playgroud)

注意:上面会询问远程主机上用户账号的密码,并自动将公钥复制到合适的位置。如果 ssh-copy-id 对您不起作用,请使用我们之前讨论过的方法来设置 ssh 无密码登录。

4. 无密码通过 ssh 执行 rsync

现在,您应该可以在不输入密码的情况下通过 ssh 连接到远程主机。

ssh user@192.168.200.10
Run Code Online (Sandbox Code Playgroud)

再次执行rsync,这次应该不会要求您输入任何密码。

rsync -avz -e ssh /home/test/ user@192.168.200.10:/backup/test/
Run Code Online (Sandbox Code Playgroud)

  • 从 http://www.thegeekstuff.com/2011/07/rsync-over-ssh-without-password/ 清除复制和粘贴,您应该参考原作者。 (7认同)