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密钥,避免泄露,希望本文能对大家有所帮助。