讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux服务器如何配置多台机器间的SSH主备免密 脚本化实现

大雪君_4844

大雪君_4844

发布时间:2026-04-15 08:40:46

|

322人浏览过

|

来源于php中文网

原创

主备免密需按角色明确主备,主节点以目标用户生成密钥并分发,ssh-keygen必须在主节点执行,ssh-copy-id须显式指定用户和端口,脚本需校验hosts/known_hosts一致性及authorized_keys权限为600。

linux服务器如何配置多台机器间的ssh主备免密 脚本化实现

主备免密不是“配一次就全通”,而是必须按角色明确谁是主、谁是备,并分别在主节点生成密钥、分发到所有备节点;脚本化关键在于避免手敲重复命令,但不能跳过权限和路径校验。

ssh-keygen 必须在主节点以目标用户身份执行

公钥体系是单向信任:只有主节点的私钥能解密它自己发出的请求,所以密钥必须在主节点上生成,且必须用后续要用于登录的用户(如 hadoop、deploy)执行 ssh-keygen -t rsa。若用 root 生成再拷给普通用户,~/.ssh 所属用户和权限会错乱,导致 ssh 拒绝读取私钥。

  • 执行前先确认当前用户和家目录:whoami 和 echo $HOME
  • 强制指定密钥路径,避免默认覆盖已有密钥:ssh-keygen -t rsa -f ~/.ssh/id_rsa_master -N ""
  • 生成后立刻检查权限:ls -ld ~/.ssh ~/.ssh/id_rsa_master,应为 drwx------ 和 -rw-------

ssh-copy-id 分发时必须显式指定用户和端口

ssh-copy-id 默认用当前用户登录远端,且走 22 端口。若备节点用的是非默认用户(如 hadoop@slave1)或非标准 SSH 端口(如 2222),不加参数会失败并静默创建空 authorized_keys,后续登录仍要密码。

Browser Setup (No-Root Linux)
Browser Setup (No-Root Linux)

在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...

下载
  • 正确写法示例:ssh-copy-id -i ~/.ssh/id_rsa_master.pub hadoop@slave1
  • 非标端口加 -p 参数:ssh-copy-id -p 2222 -i ~/.ssh/id_rsa_master.pub deploy@backup-server
  • 若提示 No identities found,说明本地没找到公钥文件,检查 -i 路径是否拼错,或公钥是否真被生成(ls ~/.ssh/id_rsa_master.pub)

脚本中必须校验 /etc/hosts 和 known_hosts 一致性

脚本批量执行 ssh-copy-id 前,如果 /etc/hosts 未同步,或目标主机首次连接时 known_hosts 缺失指纹,脚本会卡在交互式确认(Are you sure you want to continue connecting?),导致自动化中断。

  • 提前统一 hosts:用 scp /etc/hosts user@slaveX:/tmp/hosts && ssh user@slaveX "sudo cp /tmp/hosts /etc/hosts"
  • 绕过首次确认(仅限可信内网):ssh-copy-id -o StrictHostKeyChecking=no -i ...
  • 更稳妥做法:先用 ssh -o ConnectTimeout=5 -o BatchMode=yes user@host exit 2>/dev/null 预探测连通性

备节点无需生成密钥,但需确保 authorized_keys 权限为 600

主备模型下,备节点只接受主节点连接,自身不主动发起 SSH 登录,因此不需要生成密钥对。但 authorized_keys 文件权限若不是 600(即 -rw-------),OpenSSH 会直接忽略该文件,即使内容正确也无效。

  • 脚本中加入修复命令:ssh user@slaveX "chmod 600 ~/.ssh/authorized_keys 2>/dev/null || true"
  • 常见陷阱:用 cat id_rsa.pub >> authorized_keys 追加后,文件可能继承 shell 的 umask(如 002),导致权限变成 602,ssh 拒绝加载
  • 验证方式:ssh -o LogLevel=DEBUG3 user@slaveX exit 2>&1 | grep "Offering public key",看到这行才说明公钥被真正识别

最易被忽略的一点:主节点自己的 ~/.ssh/known_hosts 里必须有所有备节点的 host key 记录,否则脚本里后续用 ssh user@slaveX command 执行远程命令时,仍会因 host key 变更或缺失而失败——这不是免密问题,而是信任链不完整。

热门AI工具

更多
VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

529

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1678

2024.03.01

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

707

2025.10.24

hadoop是什么
hadoop是什么

hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。本专题为大家免费提供hadoop相关的文章、下载和课程。

811

2023.06.30

hadoop三大核心组件介绍
hadoop三大核心组件介绍

Hadoop的三大核心组件分别是:Hadoop Distributed File System(HDFS)、MapReduce和Yet Another Resource Negotiator(YARN)。想了解更多hadoop的相关内容,可以阅读本专题下面的文章。

1665

2024.03.13

hadoop的核心
hadoop的核心

hadoop的核心由分布式文件系统 (hdfs) 和资源管理框架 (mapreduce) 组成。想了解更多hadoop的相关内容,可以阅读本专题下面的文章。

1946

2024.05.16

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

1229

2025.12.08

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3830

2023.06.21

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn