当前位置: 首页 > news >正文

Linux下使用ssh-agent实现集群节点间无免密安装部署

目的:

利用ssh-agent服务实现节点间非免密访问,集群利用ssh-agent进行ssh访问管理代替ssh免密配置的模式,提升集群的安全性。

ssh-agent介绍

ssh-agent扮演的是一个代理的角色。当其他程序需要身份验证的时候可以将验证申请交给它来完成整个认证过程,涉及的场景如下:

1)使用不同的密钥连接到不同的主机时,需要手动指定对应的密钥,而ssh-agent可以自动选择对应的密钥进行认证。

2)避免重复输入密码:如果私钥使用密码短语进行了加密,每一次使用SSH密钥对进行登录的时候,都必须输入正确的密码短语。而ssh-agent程序能够将已解密的私钥缓存起来,在需要的时候提供给的SSH客户端。这样就只需要在使用ssh-add时将私钥加入ssh-agent缓存的时候,输入一次密码短语就可以了。

ssh-agent原理

https://img-blog.csdnimg.cn/20190615180608830.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VndW9xaW9uZ2hhaQ==,size_16,color_FFFFFF,t_70

用户Bob 使用ssh-agent来管理私钥之后。ssh-agent会启动一个进程在内存里保存这些私钥。之后每次登录时,ssh客户端都会跟ssh-agent请求是否有目标主机的私钥;如果有,ssh客户端便能直接登录目标主机。

操作步骤如下:

1、通过ssh-agent bash或者eval `ssh-agent`来启动。

2、通过ssh-add为ssh-agent添加私钥。

ssh-agent代理转发

https://img-blog.csdnimg.cn/20190615182917515.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VndW9xaW9uZ2hhaQ==,size_16,color_FFFFFF,t_70

在X机器上运行 ssh-agent代理来管理私钥;通过X机器ssh登录到Y机器;能让Y机器上的ssh客户端也能使用到所有X机器上的ssh-agent所管理的所有私钥。

Y机器上的ssh客户端会跟Y机器上sshd服务器请求私钥。因为已经从X登录到Y上,X的ssh客户端和Y上的sshd服务器连理了一条连接。通过这条连接,请求被转发给了X上的ssh客户端,最终传递给X上的ssh-agent。请求的结果反向传递回去。

使用ssh-agent代理转发功能需要:

1、本节点的ssh客户端配置文件(/etc/ssh/ssh_config)添加:

ForwardAgent yes

默认是没有开启的。

2、下一节点的 sshd 服务器配置文件(/etc/ssh/sshd_config)添加:

AllowAgentForwarding yes

默认是开启的。

集群无免密配置方法

配置ssh-agent过程

第一步:删除集群所有节点上/root/.ssh/目录下的文件

mkdir -p /root/.ssh

rm -rf /root/.ssh/*

第二步:在所有master节点,生成各自的密钥并修改密钥文件名称,密钥文件默认保存路径(/root/.ssh/)不要修改,并添加密钥的口令passphrase,所有管理节点的秘钥口令保持一致。

#生成密钥

ssh-keygen -m PEM -b 1024 -t rsa

#修改密钥文件名称

在所有master上执行如下命令:

mv /root/.ssh/id_rsa /root/.ssh/id_rsa_master

mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_master.pub

第三步:将每个master节点生成的密钥,分别拷贝到其他所有节点上(包括自己

#假设三个管理节点分别为100.7.66.108/110/112 ,计算节点为100.7.66.114,以master1节点的IP地址为100.7.66.108为例,将生成的密钥拷贝到所有节点包括自己,首次需要输入各个节点的root密码,在master1上执行命令如下:

ssh-copy-id -i /root/.ssh/id_rsa_master root@100.7.66.108需要集群root用户密码

ssh-copy-id -i /root/.ssh/id_rsa_master root@100.7.66.110需要集群root用户密码

ssh-copy-id -i /root/.ssh/id_rsa_master root@100.7.66.112需要集群root用户密码

ssh-copy-id -i /root/.ssh/id_rsa_master root@100.7.66.114需要集群root用户密码

同理,在master2和master3上执行相同的命令。

第四步:集群管理节点配置私钥口令

在所有管理节点上配置一个文件,文件内容保存passphrase(私钥口令),私钥口令使用密文进行加密,采用现有的V3.8代码中加解密方式获取明文。

节点间底层脚本调用方式:

第一步:默认操作系统是不开启ssh-agent服务的,需要手动开启

#执行任务时,在当前管理节点启动ssh-agent

ssh-agent bash

第二步:在当前管理节点上将密钥交给ssh-agent托管

#把密钥添加到 ssh-agent 缓存中,需要传入集群密钥口令passphrase

ssh-add /root/.ssh/id_rsa_master

第三步:执行扩缩容任务脚本或者调用底层脚本

ansible脚本任务:

管理节点访问管理节点或者管理节点访问计算节点,都不需要增加配置参数,只需要将密钥交给ssh-agent托管即可实现临时免密。

shell脚本任务:

管理节点访问管理节点或者管理节点访问计算节点,不需要增加配置参数,只需要将密钥交给ssh-agent托管即可实现临时免密。

注:ssh-agent服务启动后,只是在当前ssh进程中的当前管理节点上到其他所有节点是免密登录的

第四步:任务结束后,移除ssh-agent管理密钥的权限,终止ssh-agent服务进程

#从ssh-agent缓存中删除密钥并kill掉ssh-agent进程

ssh-add -d /root/.ssh/id_rsa_master

ssh-agent -k

http://www.dtcms.com/a/338421.html

相关文章:

  • 深度学习——R-CNN及其变体
  • 【轨物交流】轨物科技与华为鲲鹏生态深度合作 光伏清洁机器人解决方案获技术认证!
  • Session共享与Sticky模式:优化Web应用性能
  • [激光原理与应用-296]:理论 - 非线性光学 - 线性光学与非线性光学对比
  • SpringBoot校园商铺运营平台
  • 跨平台RTSP播放器深度对比:开源方案与商业SDK的取舍之道
  • MiniMax Agent 上线 Market Place ,AI一键复制克隆网站
  • 视觉语言导航(5)——VLN的具体工作原理——Seq2Seq CMA模型 KL散度 TRANSFORMER 3.1前半段
  • PMP-项目管理-十大知识领域:资源管理-管理团队、设备、材料等资源
  • Win10下配置WSL2后nvidia-smi不正常显示问题
  • 第一阶段C#基础-15:面向对象梳理
  • python-----机器学习中常用的数据预处理
  • 【前端面试题】JavaScript 核心知识点解析(第二十二题到第六十一题)
  • 【数据分析】R语言在生态学数据分析中的应用:从数据处理到可视化
  • 美图披露半年报:AI应用取得突破,净利润同比大增71.3%
  • C++11列表初始化 {}
  • GitHub Actions 从核心思想到最佳实践
  • 宋红康 JVM 笔记 Day04|双亲委派机制、沙箱安全机制、类的自动使用与被动使用
  • 电子电气架构 --- 软件会给汽车带来哪些变化?
  • 鸿蒙生态7月技术月报 | HarmonyOS 5.1 开发特性详解
  • 蓝池参与雅江水电工程融资,助力国家基础设施建设与经济发展
  • 08.常见文本处理工具
  • 03.文件管理和操作命令
  • 解读60页全面认识大数据基础知识培训【附全文阅读】
  • 8.18 打卡 DAY 45 Tensorboard使用介绍
  • Mysql——前模糊索引失效原因及解决方式
  • 深度强化学习之前:强化学习如何记录策略与价值?
  • Java面试题储备14: 使用aop实现全局日志打印
  • Nodejs学习
  • 【SkyWalking】单节点安装