使用 ssh-copy-id 命令来设置 SSH 免密登录,并确保所有相关文件和目录权限正确设置,可以按照以下步骤进行:
步骤 1:在源服务器(198.120.1.109)生成 SSH 密钥对
如果还没有生成 SSH 密钥对,首先需要在源服务器上生成它:
ssh-keygen -t rsa -b 2048
按提示操作,可以直接按 Enter 使用默认路径(~/.ssh/id_rsa)和空密码。
完成后,id_rsa 是私钥,id_rsa.pub 是公钥,它们将保存在 ~/.ssh/ 目录下。
步骤 2:使用 ssh-copy-id 将公钥复制到目标服务器(198.120.1.113)
在源服务器 198.120.1.109 上,使用以下命令将源服务器的公钥复制到目标服务器 198.120.1.113:
ssh-copy-id root@198.120.1.113
将 root替换为目标服务器 198.120.1.113 你自己的用户名。
该命令会要求你输入目标服务器的密码,输入正确的密码后,公钥(id_rsa.pub)将被自动复制到目标服务器的 ~/.ssh/authorized_keys 文件中。
步骤 3:确认目标服务器(198.120.1.113)权限设置
确保目标服务器的 ~/.ssh 目录和 authorized_keys 文件权限正确设置,否则免密登录会失败。
登录目标服务器 198.120.1.113:
ssh remote_user@198.120.1.113
确保目标服务器的 ~/.ssh 目录权限为 700,authorized_keys 文件权限为 600:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
~/.ssh 目录的权限需要为 700,确保只有文件所有者可以访问和修改该目录。
authorized_keys 文件的权限需要为 600,确保只有文件所有者可以读取和写入该文件。
步骤 4:确认源服务器(198.120.1.109)权限设置
在源服务器 198.120.1.109 上,确保 ~/.ssh 目录和 id_rsa 文件权限也正确:
登录源服务器 198.120.1.109:
ssh root@198.120.1.109
确保源服务器的 ~/.ssh 目录权限为 700,id_rsa 文件权限为 600:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
~/.ssh 目录的权限需要为 700。
id_rsa 文件的权限需要为 600,确保只有文件所有者可以读取该私钥。
步骤 5:确认免密登录是否成功
现在,你可以测试源服务器是否可以免密登录到目标服务器。执行以下命令,检查是否能够成功登录而不需要输入密码:
ssh root@198.120.1.113
如果一切配置正确,你应该可以直接登录目标服务器,而不需要输入密码。
步骤 6:反向配置(如果需要)
如果你还希望从目标服务器(198.120.1.113)免密登录到源服务器(198.120.1.109),你可以在目标服务器上生成 SSH 密钥,并使用 ssh-copy-id 将目标服务器的公钥复制到源服务器的 authorized_keys 文件中。具体步骤与上面相同。
在目标服务器(198.120.1.113)上生成 SSH 密钥对:
ssh-keygen -t rsa -b 2048
将目标服务器的公钥复制到源服务器的 authorized_keys 文件中:
ssh-copy-id remote_user@198.120.1.109
确保源服务器上的 ~/.ssh 目录和 authorized_keys 文件权限正确设置:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
测试是否可以从目标服务器免密登录到源服务器:
ssh root@198.120.1.109
总结:
ssh-copy-id 命令帮助你将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中,以实现免密登录。
确保目标服务器和源服务器的 .ssh 目录和文件权限正确设置:~/.ssh 设置为 700,authorized_keys 和 id_rsa 设置为 600。
使用上述步骤,你可以在两台服务器之间实现 SSH 免密登录。