[提供可行性脚本] RHEL/CentOS 7 多节点SSH免密…
2018-08-17 09:31:51来源:博客园 阅读 ()
实验说明:
在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少;
在机器数目很多的时候,使用更过的往往是Ansible分发并执行SSH免密登陆脚本,使得每台机器之间都能免密登陆。
实验环境:
- 宿主机系统 :Fedora 28 WorkStation
- 虚拟机管理器 :Virt-Manager 1.5.1
- 虚拟机配置 :ha1 CentOS 7.2 1511 (minimal) virbr0: 192.168.122.57
ha2 CentOS 7.2 1511 (minimal) virbr0: 192.168.122.58
ha3 CentOS 7.2 1511 (minimal) virbr0: 192.168.122.59
实验步骤:
-
安装系统并配置网络(所有虚拟机都需联网)
-
先操作第一台虚拟机(ha1)
-
编写主机名与IP的映射关系
1 [root@ha1 ~]# vi /etc/hosts 2 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 3 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 4 192.168.122.57 ha1 5 192.168.122.58 ha2 6 192.168.122.59 ha3
-
创建公有密钥
1 [root@ha1 ~]# ssh-keygen -t rsa 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/root/.ssh/id_rsa): 4 /root/.ssh/id_rsa already exists. 5 Overwrite (y/n)? y 6 Enter passphrase (empty for no passphrase): 7 Enter same passphrase again: 8 Your identification has been saved in /root/.ssh/id_rsa. 9 Your public key has been saved in /root/.ssh/id_rsa.pub. 10 The key fingerprint is: 11 40:c3:81:eb:60:49:2e:f7:fe:59:bb:ef:7d:ad:bb:06 root@ha2 12 The key's randomart image is: 13 +--[ RSA 2048]----+ 14 | o+. | 15 | . .... | 16 | o . .. | 17 |. * . . | 18 | + + S | 19 | o E | 20 | . . . . | 21 | . o . . o .| 22 | .o o+o .o++ | 23 +-----------------+
-
发送公有密钥至远程机器
1 [root@ha1 ~]# ssh-copy-id root@192.168.122.58 2 [root@ha1 ~]# ssh-copy-id root@192.168.122.59
-
以上是单台虚拟机的逐条执行命令的方式,将以上操作写成脚本(脚本在本文末尾PS处)
-
下面操作其他虚拟机(ha2、ha3)
1 # 虚拟机ha2 2 [root@ha2 ~]# chmod 777 build-ssh-credit.sh 3 [root@ha2 ~]# ./build-ssh-credit.sh
1 # 虚拟机ha3 2 [root@ha3 ~]# chmod 777 build-ssh-credit.sh 3 [root@ha3 ~]# ./build-ssh-credit.sh
-
至此,三台虚拟机之间相互访问都无需输入密码,实现了SSH的免密登陆
-
Complete!!!
PS:公钥初始化和实现SSH免密登陆的脚本(build-ssh-credit.sh),直接拷贝就可使用。
#!/usr/bin/bash # 安装expect,minimal没有此rpm包,需联网或有本地yum源 yum install expect -y expect << EOF set timeout 10 # 创建公有密钥 spawn ssh-keygen -t rsa expect { "*to save the key" {send "\n";exp_continue} "*(y/n)" {send "y\r";exp_continue} "Enter passphrase" {send "\n";exp_continue} "Enter same passphrase" {send "\n";exp_continue} } EOF # 获取/etc/hosts文件中除localhost的映射关系 ip_list=`grep -v 'localhost' /etc/hosts | awk -F ' ' '{print $1,$2}'` for ip in $ip_list do expect << EOF set timeout 2 # 发送公有密钥 spawn ssh-copy-id root@$ip expect { "yes/no" {send "yes\r";exp_continue} "password" {send "000000\r";exp_continue} } # 拷贝/etc/hosts文件到远程机器 spawn scp /etc/hosts $ip:/etc expect { "yes/no" {send "yes\r";exp_continue} "password" {send "root\r";exp_continue} } EOF done
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Nginx简介及配置文件详解
下一篇:vim常用操作
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- Ubuntu下用脚本执行sql语句(sqlite) 2020-05-29
- 如何将目录下的脚本一次性全部执行 2020-05-28
- 私有云技术 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash