ssh公钥远程登录服务器配置,实现无密码登录
- 笔记
- 2024-11-17
- 130热度
- 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 密钥对的免密码登录,并且通过配置快捷命令使得登录更加便捷。确保权限设置正确,避免安全漏洞。