环境:CENTOS8
需求:为部署HADOOP分布集群,需要在三台服务器之间实现SSH免密登录。步骤如下
1. 在三台服务器上创建用户,需要切换到root或管理员用户
adduser hadoop # 创建用户
passwd hadoop # 设置密码
# 添加sudo权限
vi /etc/sudoers
# 按照 <用户名> <权限> <切换sudo时是否需要输入密码> 添加记录,示例
# Allows people in group wheel to run all commands
username ALL=(ALL) ALL
2. 添加sudo权限
vi /etc/sudoers
按照 <用户名> <权限> <切换sudo时是否需要输入密码> 添加记录,示例
# Allows people in group wheel to run all commands
username ALL=(ALL) ALL
3. 安装 openssh-server,已安装可跳过。
dnf install -y openssh-server
4. 切换到 hadoop 用户,制作密钥
su hadoop
cd ~/.ssh
ssh-keygen -t rsa # 提示可略过,一路回车即可
成功后,在 ~/.ssh/ 目录下可以看到 id_rsa.pub 等密钥文件
5. 添加本地公钥到授权文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改授权文件权限, 否则ssh登录会报错
sudo chmod 600 authorized_keys
7. 检查本地登录是否免密
ssh localhost
如果提示需要密码,则检查以下情况:
authorized_keys 文件是否添加公钥;
less authorized_keys
ssh配置文件是否正确
# 检查ssh配置文件
sudo vi /etc/ssh/ssh_config
其中 PasswordAuthentication 的值改为no
8. 测试本地SSH登录
ssh localhost
可免密登录即为正常
9. 发送公钥到目标服务器,hostname和用户都已经配置好,且能ping通
scp ~/.ssh/id_rsa.pub <username>@<hostname>:/home/<username>
10. 登录目标服务器,添加公钥到授权文件
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
坑 :
1、需要提前创建好用户,并配置好sudo等权限
2、auth授权文件的权限需要改为600,否则即使sshd配置正确也不能免密登陆。