我想知道配置无密码 ssh 密钥的步骤是什么,以便我可以连接并从多个远程服务器提取数据。我是否可以这样做:
备份机:
ssh-keygen -t rsa
ssh-copy-id -i /home/user/.ssh/id_rsa.pub root@server1
ssh-copy-id -i /home/user/.ssh/id_rsa.pub root@server2
ssh-copy-id -i /home/user/.ssh/id_rsa.pub root@server3
并在每个远程服务器{1-3}上执行:
PermitRootLogin forced-commands-only
并将rsync
数据从备份服务器拉到每个远程服务器。
这些是正确的步骤吗?
谢谢
答案1
- 以 root 身份运行生成命令(通过
sudo -s
或sudo -i
),这样密钥就不会在你的主目录中 - 如果您没有交互式 root 登录(例如在基于 Debian 的系统上),则无法以 root 身份登录到您的服务器;请以您的用户身份执行此操作,假设您在这些机器上有登录名。然后登录
ssh
并将authorized_keys 文件复制到每台服务器上并设置正确的权限。scp
/root/.ssh/
from="w.x.y.z"
如果您的备份机器上有静态 IP,请在您的 authorized_keys 文件中使用一个节。PermitRootLogin forced-commands-only
实际上并不比 好多少without-password
。
答案2
是的,你可以这样做。我写了一个博客文章不久前我曾讨论过这个问题(它基于设置 dirvish,这是一个基于 rsync 的备份系统)。在客户端上设置密钥后,您可以运行备份,查看它运行的命令,然后设置强制命令。