linux ssh认证(公钥机)配置
2024-08-25 12:56:46
一、产生背景
在实际工作中,linux集群需要自动化的管理,市面上较常见的自动化运维工具诸如ansible,puppet,saltstack;轻量级的有pssh系列,这其中大多数工具使用的前提就是集群配置有公钥机可免密ssh登录集群内所有服务器,所以要先配置一台公钥机使用。
二、配置实例
1、在除公钥机外所以服务器生成密钥
[root@test ~]# cd /root/.ssh/
[root@test .ssh]# ll
总用量
-rw-r--r--. root root 11月 known_hosts
[root@test .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cBjbvfy9VkWLQpJESgqLHeq923mm4EF1Vb1L4wGs0IU root@test
The key's randomart image is:
+---[RSA ]----+
| o ..++*o. |
| + + o*oE + . .|
| o o o+o+ = . o..|
|. . . .o o o * ..|
| . o S o + + .|
| . . . + .|
| + . .. |
| . = .o .. |
| o ++ .. |
+----[SHA256]-----+
[root@test .ssh]#
[root@test .ssh]# ll
总用量
-rw-------. root root 11月 : id_rsa
-rw-r--r--. root root 11月 : id_rsa.pub
-rw-r--r--. root root 11月 known_hosts
2、在第一台服务器上创建authorized_keys文件,并修改权限,用以保存所有服务器的公钥
[root@test .ssh]# touch authorized_keys
[root@test .ssh]# chmod authorized_keys
[root@test .ssh]# cat id_rsa.pub >> authorized_keys
3、将authorized_keys文件复制到下一台服务器,并重复以上两个步骤
[root@test .ssh]# scp authorized_keys root@192.168.0.11:~/.ssh/
4、重复以上步骤,直至最后一台服务器,将authorized_keys文件复制到公钥机对应目录下
[root@test .ssh]# scp authorized_keys root@192.168.0.1:~/.ssh/
[root@test .ssh]# chmod authorized_keys
5、配置自动化运维工具配置文件,并删除除公钥机外的所有机器中的authorized_keys文件(pssh为例)
[root@test ~]# pssh -h serverlist.txt -P -p1 "rm -rf /root/.ssh/authorized_keys"
6、测试公钥机免密ssh登录其他服务器即可
三、脚本实现
[root@Nginx bin]# yum install expect -y
[root@Nginx bin]# find / -name expect
/usr/bin/expect
[root@Nginx bin]# touch /root/.ssh/authorized_keys
[root@Nginx bin]# vim self_ssh.sh
#!/usr/bin/expect -f
#
set timeout
set ip_list [open /home/jiayimeng/bin/ip r]
while { [gets $ip_list line ]>= } {
set ip [lindex $line ]
spawn ssh root@$ip
expect "*yes/no:" { send "yes\r" }
expect "*password:" { send "123456\r" }
expect "#"
send "cat /root/.ssh/id_rsa.pub | ssh root@192.168.3.25 'cat >> .ssh/authorized_keys'\r"
expect "*password:" { send "123456\r" }
expect "#" { send "exit\r"}
interact
} ip中写明所有机器的ip地址
except
四、总结
在不连接外部互联网的特定集群中,公钥机的使用大大方便了运维人员管理维护集群,系统集成人员集成施工的一系列操作;同时,由于公钥机的特殊,要做好公钥机的安全工作。
最新文章
- mysql-开启慢查询&;所有操作记录日志
- CWMP开源代码研究4——认证流程
- BZOJ AC800纪念
- pom.xml详解
- 字典的循环和if语句
- OC语言description方法和sel
- C# 反射创建对象,包括创建引用外部程序集类的实例
- viewPage
- fhq_treap 总结
- Azure IoT 技术研究系列2-起步示例之设备注册到Azure IoT Hub
- Resetting Frame Animation
- 比较DataTable中新旧数据
- Windows环境下springboot集成redis的安装与使用
- [20180413]热备模式相关问题2.txt
- [转帖]什么是安全散列算法SHA256?
- css系列之box-sizing
- 从PHP5.0到PHP7.1的性能全评测
- shell中信号处理
- SpringBoot 无法显示html文件 找不到html文件 如果显示html文件
- Android pm 命令详解
热门文章
- cloud native
- 3 differences between Savepoints and Checkpoints in Apache Flink
- 购物车-删除单行商品-HTMLTableElement.deleteRow()
- [LeetCode] 7.Reverse Integer - Swift
- Spark源码分析 -- TaskScheduler
- 深入理解Flask中的上下文
- 适配器模式(Adapter Pattern)--不兼容结果的协调
- alexnet,VGG,googlenet,resnet
- python定义函数时默认参数注意事项
- K-medodis聚类算法MATLAB