CentOS 7 集群 SSH 免密与主机名配置文档

一、文档概述

本文档记录 master + slave1 双节点集群的主机名配置 与SSH 双向免密登录完整流程,用于实现节点间无密码访问与清晰的主机名标识。


二、主机名配置(节点更名)

2.1 核心目标

将 master 节点主机名从 localhost 改为 master,slave1 节点改为 slave1,使终端提示符显示为 root@master / root@slave1。

2.2 配置步骤

2.2.1 master 节点主机名配置
  1. 永久修改主机名

    复制代码

    hostnamectl set-hostname master

    1. 作用:将系统静态主机名永久修改为 master,重启后仍生效。

    2. 原理:修改 /etc/hostname 文件,系统启动时读取该文件作为主机名。

  2. 验证主机名

    复制代码

    hostname # 查看当前主机名 hostnamectl status | grep "Static hostname" # 查看永久配置

    复制代码

    master Static hostname: master

  3. 刷新终端提示符

已打开的会话不会自动更新提示符,需执行以下命令之一:

复制代码

exec bash # 重启当前 shell,立即刷新提示符(推荐) # 或 exit && ssh root@master # 退出后重新登录,新会话显示新主机名

  1. 最终效果

    复制代码

    [root@master ~]#

2.2.2 slave1 节点主机名配置
  1. 永久修改主机名

    复制代码

    hostnamectl set-hostname slave1

  2. 验证主机名

    复制代码

    hostname hostnamectl status | grep "Static hostname"

    复制代码

    slave1 Static hostname: slave1

  3. 刷新终端提示符

    复制代码

    exec bash

  4. 最终效果

    复制代码

    [root@slave1 ~]#

2.3 hosts 映射配置

在 master 和 slave1 节点 均执行以下操作,确保节点间能通过主机名解析:

复制代码

vi /etc/hosts

添加完整映射:

复制代码

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.56.110 master 192.168.56.111 slave1


三、SSH 双向免密登录配置

3.1 核心目标

实现 master ↔ slave1 节点间无密码 SSH 登录,避免集群运维时重复输入密码。

3.2 master → slave1 单向免密配置

3.2.1 在 master 节点生成密钥对
复制代码

ssh-keygen -t rsa

  • 一路回车,生成 RSA 密钥对:

    • 私钥:/root/.ssh/id_rsa

    • 公钥:/root/.ssh/id_rsa.pub

3.2.2 分发公钥到 slave1
复制代码

ssh-copy-id root@slave1

  • 输入 yes 确认主机真实性,再输入 slave1 的 root 密码,完成公钥分发。

  • ✅ 成功提示:Number of key(s) added: 1

3.2.3 验证免密登录
复制代码

ssh root@slave1

  • 无需输入密码,直接登录 slave1,提示符变为 [root@slave1 ~]#。

3.3 slave1 → master 单向免密配置

3.3.1 在 slave1 节点生成密钥对
复制代码

ssh-keygen -t rsa

3.3.2 分发公钥到 master
复制代码

ssh-copy-id root@master

  • 输入 yes 确认,再输入 master 的 root 密码,完成公钥分发。

  • ✅ 成功提示:Number of key(s) added: 1

3.3.3 验证免密登录
复制代码

ssh root@master

  • 无需输入密码,直接登录 master,提示符变为 [root@master ~]#(主机名修改后)。

3.4 双向免密验证

|-----------------|-------------------|-----------------------------|
| 测试方向 | 命令 | 预期结果 |
| master → slave1 | ssh root@slave1 | 免密登录,提示符 [root@slave1 ~]# |
| slave1 → master | ssh root@master | 免密登录,提示符 [root@master ~]# |


四、常见问题与排查

4.1 SSH 登录后提示符未显示 root@master

  • 原因:主机名未永久修改,或当前会话未刷新提示符。

  • 解决:

    • 永久修改:hostnamectl set-hostname master

    • 刷新会话:exec bash 或重新登录。

4.2 ssh-copy-id 提示 Permission denied

  • 原因:输入的目标节点 root 密码错误。

  • 解决:重新输入正确密码,或检查目标节点是否允许 root 登录。

4.3 节点间 ping 不通

  • 原因:防火墙/SELinux 未关闭,或 hosts 映射错误。

  • 解决:

    复制代码

    systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config


五、文档版本信息

|------|----------------------------------------------|
| 项目 | 内容 |
| 文档版本 | V1.0 |
| 适用环境 | VirtualBox + CentOS 7 |
| 最后更新 | 2026-03-12 |
| 验证结果 | ✅ 主机名配置生效<br>✅ SSH 双向免密登录正常<br>✅ 节点间互通正常 |

相关推荐
爱吃香菜的初学者1 分钟前
十四.Linux——消息队列
linux·运维·开发语言
仿生狮子3 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
Lvan的前端笔记6 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习7 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
Apipi*7 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
不像程序员的程序媛7 小时前
检测网络的命令mtr详解
网络
xcs194057 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
天启HTTP8 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_8 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
明月_清风8 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js