CentOS SSH 免密登录配置详细指南
SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录和管理数据,在多节点集群环境中,如Hadoop集群,通过SSH免密登录可以极大地简化运维工作,提高工作效率,本文将详细介绍如何在CentOS系统中配置SSH免密登录,包括手动配置和自动脚本配置两种方法。
环境准备
假设我们有三台主机:hadoop01、hadoop02、hadoop03,它们的IP地址分别为192.168.6.140、192.168.6.141、192.168.6.142,所有操作均在root用户下进行。
手动配置方法
1. 生成公钥和私钥
在每台主机上执行以下命令生成RSA密钥对:
sshkeygen t rsa
按提示操作,直接敲三次回车即可完成生成,在~/.ssh
目录下会生成id_rsa
(私钥)和id_rsa.pub
(公钥)两个文件。
2. 进入.ssh
目录
cd ~/.ssh
3. 拷贝公钥到其他主机
3.1 在hadoop01上执行
sshcopyid hadoop01 sshcopyid hadoop02 sshcopyid hadoop03
3.2 在hadoop02上执行
sshcopyid hadoop01 sshcopyid hadoop02 sshcopyid hadoop03
3.3 在hadoop03上执行
sshcopyid hadoop01 sshcopyid hadoop02 sshcopyid hadoop03
每次拷贝公钥时需要输入目标主机的密码。
4. 测试免密登录
尝试从一台主机登录到另一台主机,
ssh hadoop02
如果一切配置正确,你应该能够无需密码直接登录。
5. 退出登录
exit
自动配置方法(脚本配置)
对于大型集群,手动配置显然不切实际,以下是使用脚本自动配置SSH免密登录的方法。
1. 创建脚本文件
在hadoop01上,使用root用户打开/usr/local/bin
目录:
cd /usr/local/bin touch autosshsshpass.sh chmod R 755 autosshsshpass.sh
编辑autosshsshpass.sh
文件,添加以下内容:
#!/bin/bash
user=whoami
passwd="这里输入自己设置的对应用户密码"
echo "开始配置免密登录......"
for((current=01; current<=03; current++));do
for((host=01; host<=03; host++));do
sshpass p $passwd ssh q o StrictHostKeyChecking=no $user@hadoop$current "sshpass p $passwd sshcopyid o StrictHostKeyChecking=no $user@hadoop$host"
done
done
echo "恭喜, 免密登录配置完成!"
>注意: 请将passwd
变量的值替换为你的实际密码。
2. 安装依赖
在每台主机上执行以下命令安装sshpass
:
sudo yum install y sshpass
3. 生成公钥和私钥
在每台主机上执行以下命令生成RSA密钥对:
sshkeygen t rsa
按提示操作,直接敲三次回车即可完成生成。
4. 执行脚本
在hadoop01主机上执行脚本:
autosshsshpass.sh
脚本执行完毕后,所有主机之间的免密登录配置即完成。
5. 测试免密登录
尝试从一台主机登录到另一台主机,
ssh hadoop02
如果一切配置正确,你应该能够无需密码直接登录。
6. 退出登录
exit
注意事项与常见问题解答
1. 权限问题
确保.ssh
目录及其下的authorized_keys
文件具有正确的权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chmod 600 ~/.ssh/id_rsa
2. SSH服务配置
确保SSH服务已启动并配置为允许密码认证和公钥认证:
编辑/etc/ssh/sshd_config
文件,确保以下配置存在且未被注释:
PubkeyAuthentication yes PasswordAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
修改后重启SSH服务:
systemctl restart sshd
3. 防火墙设置
确保服务器防火墙规则允许SSH连接(默认端口是22):
firewallcmd permanent addservice=ssh firewallcmd reload
4. 已知主机文件
首次登录时,SSH会提示是否继续连接,输入yes
后会在~/.ssh/known_hosts
文件中记录主机信息,如果多次出现提示,可能是由于不同的用户主目录导致,可以通过以下方式解决:
sshkeygen R hostname
重新生成一次公钥即可。
5. 日志文件检查
如果配置过程中出现问题,可以查看/var/log/secure
或/var/log/auth.log
日志文件获取更多信息。
通过本文的介绍,相信读者已经掌握了在CentOS系统中配置SSH免密登录的方法,无论是手动配置还是使用脚本自动配置,都能有效地提高工作效率,特别是在大规模集群环境中,SSH免密登录虽然方便,但也带来了一定的安全风险,因此在实际应用中应谨慎管理SSH密钥,避免泄露,希望本文能对大家有所帮助。