ssh公钥远程登录服务器配置,实现无密码登录
- 笔记
- 2024-11-17
- 375热度
- 0评论
目标:
通过 SSH 密钥对实现从 master 节点到 slave1 节点的免密码登录。
步骤 1:在 master 节点生成 SSH 密钥对
- 在
master节点上打开终端,执行以下命令生成 SSH 密钥对:ssh-keygen- 会提示你指定密钥的保存路径,默认路径是
~/.ssh/id_rsa,如果没特殊要求,直接按Enter键即可。 - 如果你不想设置密码保护私钥,可以在设置密码时按回车跳过。这样在一些环境下会更方便。
运行后,
master节点会生成两对密钥:- 公钥:
~/.ssh/id_rsa.pub - 私钥:
~/.ssh/id_rsa
你可以通过以下命令查看公钥:
cat ~/.ssh/id_rsa.pub - 会提示你指定密钥的保存路径,默认路径是
步骤 2:将公钥复制到 slave1
方式 1:使用 ssh-copy-id 命令(推荐)
- 如果
root用户已启用,使用ssh-copy-id命令将公钥复制到slave1:ssh-copy-id root@[slave1_ip]- 如果
root用户启用且允许 SSH 登录,ssh-copy-id会自动将master上的公钥添加到slave1的~/.ssh/authorized_keys文件,并设置正确的权限。
- 如果
- 完成后,返回
master节点,尝试 SSH 登录到slave1:ssh root@[slave1_ip]如果一切正常,应该可以免密码使用
root登录到slave1。
方式 2:手动将公钥添加到 slave1
如果 root 用户未启用或无法使用 ssh-copy-id,可以手动操作:
- 在
master节点查看并复制公钥:cat ~/.ssh/id_rsa.pub - 登录到
slave1:ssh [用户名]@[slave1_ip] - 在
slave1上,打开~/.ssh/authorized_keys文件:vi ~/.ssh/authorized_keys- 如果
~/.ssh目录不存在,需要先创建:mkdir -p ~/.ssh chmod 700 ~/.ssh
- 如果
- 将
master节点的公钥粘贴到authorized_keys文件中,确保没有其他无关内容干扰。 - 保存并退出
vi编辑器:按Esc键,然后输入:wq保存并退出。 - 修改
authorized_keys文件权限,确保只有用户自己能读取:chmod 600 ~/.ssh/authorized_keys - 返回
master节点,尝试 SSH 登录到slave1:ssh [用户名]@[slave1_ip]如果能够成功登录,说明密钥对配置成功。
步骤 3:检查并调整权限
确保 slave1 上的 .ssh 目录和 authorized_keys 文件权限正确,防止其他用户修改文件,导致安全漏洞。
- 确保
.ssh目录的权限是700,只有用户本身有读写权限:chmod 700 ~/.ssh - 确保
authorized_keys文件的权限是600,只有用户本身有读取权限:chmod 600 ~/.ssh/authorized_keys - 确保
.ssh目录没有写权限给用户组:chmod g-w ~/.ssh
步骤 4:确认无密码登录
完成以上配置后,从 master 节点上测试是否能够免密码登录 slave1。运行以下命令:
ssh [用户名]@[slave1_ip]
如果能够直接登录,而不要求输入密码,则说明 SSH 密钥对配置成功。
步骤 5:退出 slave1 节点并回到 master
在 slave1 节点上验证成功登录后,退出 slave1 节点,返回 master 节点:
exit
步骤 6:配置 SSH 快捷命令(可选)
为了避免每次输入用户名和 IP 地址,可以在 master 节点上配置 SSH 快捷命令:
- 打开或创建
~/.ssh/config文件:vi ~/.ssh/config - 添加以下内容:
Host slave1 Hostname 192.168.xxx.xxx # slave1 的 IP 地址 Port 22 # SSH 端口 User root # 登录用户名 - 保存并退出编辑器。现在你可以通过以下命令直接使用
root登录:ssh slave1
小贴士
- 确保
root用户的 SSH 登录权限已启用(如果使用root登录)。在/etc/ssh/sshd_config文件中,检查以下配置:PermitRootLogin yes如果该项被禁用(
no),需要手动启用root登录权限。
如果该项不存在,则需手动添加。 - 如果你希望从
master节点到slave1节点实现无密码登录某个特定用户,只需要确保在master节点上生成的 SSH 密钥对被正确传递到slave1上的该用户的~/.ssh/authorized_keys文件中。
总结
通过上述步骤,你可以在 master 节点和 slave1 节点之间实现 SSH 密钥对的免密码登录,并且通过配置快捷命令使得登录更加便捷。确保权限设置正确,避免安全漏洞。