我需要使用 rsync 进行日常备份操作,过去(在不同的服务器上)我设法仅使用 rsa 密钥等,但现在所有 google(serverfault)教程都不起作用。
它一直要求我输入密码。
我对两台服务器都有 webmin 和 ssh/root 访问权限。
我的步骤:
- 在服务器 1 上创建密钥
- 发送
key.pub
到服务器2 - 添加
key.pub
.ssh/authorized_keys
chmod 700 .ssh/authorized_keys
- 返回服务器 1 并尝试 rsync,它不断要求输入密码...
rsync 命令: rsync -avz -e ssh file.txt root@server2:/root
编辑:好吧,我清理了所有内容,这一次,我没有在密钥中插入自定义名称,而是使用了服务器 1 上的标准名称。将 .pub 发送到服务器 2,它就起作用了……所以答案是服务器 1 的 ssh 甚至没有使用正确的密钥……
答案1
检查您的新服务器是否允许 root 登录并接受公钥认证。
确保/etc/ssh/sshd_config
PermitRootLogin yes
和
PubkeyAuthentication yes
两者的默认值都是是,所以除非它们被列出并且不是是,否则你没问题。如果你更改了任何一个,请重新启动 sshd。
还请检查~/.ssh
目录权限是否为 700
另一件需要检查的事情是,它要求的不是私钥的本地密码,对吗?如果是,您可能需要删除密码,然后采取措施保护公钥,锁定可以使用它运行的命令。
答案2
首先,您需要首次通过 ssh 进行连接。这将提示您将新的服务器指纹存储在 .ssh/known_hosts 上。然后,一旦您回答是肯定的,它应该就会连接。
连接可能因多种原因而失败。例如,如果您在.ssh/config
文件中为该特定主机添加了选项,或者您的 ssh 程序不同意身份验证模式。为了更好地检查发生了什么,您可以使用选项通过 ssh 进行连接-v
。这将在您的屏幕上打印一些信息。请在此处发布这些行。
答案3
解决方案是在创建密钥时使用标准名称。所有其他步骤保持不变,并且效果很好。