HCRM博客

如何在CentOS中设置SSH免密登录?

CentOS SSH 免密登录配置详细指南

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录和管理数据,在多节点集群环境中,如Hadoop集群,通过SSH免密登录可以极大地简化运维工作,提高工作效率,本文将详细介绍如何在CentOS系统中配置SSH免密登录,包括手动配置和自动脚本配置两种方法。

如何在CentOS中设置SSH免密登录?-图1
(图片来源网络,侵权删除)

环境准备

假设我们有三台主机: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. 拷贝公钥到其他主机

如何在CentOS中设置SSH免密登录?-图2
(图片来源网络,侵权删除)

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. 测试免密登录

尝试从一台主机登录到另一台主机,

如何在CentOS中设置SSH免密登录?-图3
(图片来源网络,侵权删除)
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密钥,避免泄露,希望本文能对大家有所帮助。

分享:
扫描分享到社交APP
上一篇
下一篇