Linux互信之基于主机(Hostbased)的SSH互信
前言:
坤哥:用密钥做root用户互信,用Hostbased做普通用户的互信。
前文地址:Linux互信之基于密钥的SSH互信
基于主机(Hostbased)的ssh互信
1.1 原理
前面介绍的是基于密钥的ssh免密,但是在实际配置集群的时候,这种方式在需要创建新用户的时候,就需要在创建用户的时候给每个用户配置免密。所以基于主机的ssh互信更适合集群的普通用户。配置一次以后,创建新的用户都可以直接达到ssh免密的效果。
网络上关于这个部分的教程本来就不多,可是在华为云上实作的时候更加是所有的教程的方法用完之后还是不能成功配置。后来定位的最主要的问题是要把旧的hostkey全都删除,重启sshd的服务生成新的hostkey。
再来这种基于主机的ssh免密是针对普通用户的,所以root用户在认证的时候会先用基于主机的方式认证,所以会先失败几次,如果还是按照默认的“最多3次尝试”的配置的话,配好主机认证以后root免密就会有问题了,所以在这里将最大尝试数提高了。
1.2 基于主机的ssh免密
场景设定:给普通用户在集群的slave和master节点之间配置基于主机ssh免密,集群的master节点为ssh-0001,其他slave节点为ssh-0002和ssh-0003。
(1) 更新/etc/ssh底下hostkey (如果在root互信的时候做了则不用重复做了)
a. 查看/etc/ssh底下的hostkey日期, 如果是旧的则删除并重启sshd服务
(2) 修改ssh_config配置文件,添加以下配置
HostbasedAuthentication yes EnableSSHKeysign yes
(3) 修改sshd_config配置文件,添加以下配置
HostbasedAuthentication yes HostbasedUsesNameFromPacketOnly yes IgnoreRhosts no MaxAuthTries 10
(4) 修改/etc/hosts.equiv配置文件,添加以下配置
ssh-0001 ssh-0002 ssh-0003
(5) 修改/etc/ssh/ssh_known_hosts配置文件,添加以下配置
ssh-keyscan ssh-0001 ssh-0002 ssh-0003 > /etc/ssh/ssh_known_hosts
(6) 将修改后的配置文件发送到slave节点
$scp /etc/ssh/ssh_config root@ssh-0002:/etc/ssh $scp /etc/ssh/sshd_config root@ssh-0002:/etc/ssh $scp /etc/hosts.equiv root@ssh-0002:/etc $scp /etc/ssh/ssh_known_hosts root@ssh-0002:/etc/ssh
(同样发给ssh-0003)
(7) 所有节点重启sshd服务
$service sshd restart
1.3 集群基于主机的ssh免密脚本制作
(1) 更新/etc/ssh底下hostkey(已经在root互信的脚本中包含)
(2) 参数设定
(3) 修改ssh_config配置文件
(4) 修改sshd_config配置文件
(5) 修改/etc/hosts.equiv配置文件
(6) 修改/etc/ssh/ssh_known_hosts配置文件
(7) 将修改后的配置文件发送到slave节点
(8) 所有节点重启sshd服务
验证成果:
普通用户可以在master跟任意slave节点之间双向SSH免密访问。
结语:
代码在附件~Linux集群节点间的互信就介绍到这里,欢迎大家评论交流~
Credit to 谢坤
P.S. 问了一下有关部门,代码迁入组件的优化在规划了,估计Q4上线。然后关于截图,建议用上传的方式。然后我上传了一下返现稍微大一点的图还是会压缩然后加水印。。嘛起码看起来比一坨黑字好看一点LOL
- 点赞
- 收藏
- 关注作者
评论(0)