分享一个Linux批量管理脚本--批量建立服务器之间SSH免密

系统 Linux
今天主要介绍一下linux如何批量建立SSH免密的过程,仅供参考。下面,我们一起来看。

今天主要介绍一下linux如何批量建立SSH免密的过程,仅供参考。

SSH免密

一、批量建立ssh私钥认证

1. 编译安装expect

expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装。

(1) 安装tcl

  1. cd /opt/tcl8.4.11/unix 
  2. ./configure 
  3. make && make install 

(2) 安装expect

  1. cd expect-5.43.0 
  2. ./configure --with-tclinclude=/opt/tcl8.4.11/generic --with-tclconfig=/usr/local/lib/ 
  3. make && make install 

分享一个linux批量管理脚本--批量建立服务器之间SSH免密

(3) 测试

分享一个linux批量管理脚本--批量建立服务器之间SSH免密

2. 主控端生成公钥

执行ssh-keygen,该命令会默认在~/.ssh/目录下创建id_rsa、id_rsa.pub两个文件,分别为公钥和私钥

  1. ssh-keygen 
  2. cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys 

分享一个linux批量管理脚本--批量建立服务器之间SSH免密

3. 相关脚本

以下均放在/root目录下

(1) ip.txt

注意前面是IP,后面是密码,用冒号:分割,如果密码有冒号的建议单独处理

  1. IP:密码 

(2) remote_operate.sh

  1. #!/bin/bash 
  2. #copyright by hwb  
  3.  
  4. if [ ! -d /root/.ssh ];then  
  5.  mkdir /root/.ssh 
  6. fi 
  7. cat /tmp/authorized_keys >> /root/.ssh/authorized_keys 

(3) batch_sshkey.sh

  1. #!/bin/bash 
  2. #copyright by hwb  
  3.  
  4. for i in `cat ip.txt` 
  5. do 
  6. ip=$(echo "$i"|cut -f1 -d":") 
  7. password=$(echo "$i"|cut -f2 -d":") 
  8.  
  9. expect -c " 
  10. spawn scp /root/.ssh/authorized_keys /root/remote_operate.sh root@$ip:/tmp/ 
  11.  expect { 
  12.  \"*yes/no*\" {send \"yes\r\"; exp_continue} 
  13.  \"*password*\" {send \"$password\r\"; exp_continue} 
  14.  \"*Password*\" {send \"$password\r\";} 
  15.  } 
  16.  
  17. expect -c " 
  18. spawn ssh root@$ip "/tmp/remote_operate.sh" 
  19.  expect { 
  20.  \"*yes/no*\" {send \"yes\r\"; exp_continue} 
  21.  \"*password*\" {send \"$password\r\"; exp_continue} 
  22.  \"*Password*\" {send \"$password\r\";} 
  23.  } 
  24. done 

4. 执行脚本并测试

运行batch_sshkey.sh脚本

分享一个linux批量管理脚本--批量建立服务器之间SSH免密

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2011-03-15 09:42:25

dsh批量管理Linux

2015-05-28 15:32:14

Linuxssh

2010-03-02 13:23:02

VNC Linux服务

2019-10-23 04:37:56

Jschsftp服务器

2021-08-05 17:40:05

XpanesLinux服务器

2020-12-29 11:04:57

Linux安装系统RedHat

2012-10-22 13:46:27

2019-09-23 11:46:02

FedoraTFTP服务器 Linux

2024-01-09 13:09:00

2014-07-08 09:27:24

SQLSERVER脚本

2019-07-21 19:40:25

服务器开发 架构

2018-03-27 08:24:32

Linux服务器密码

2017-09-15 14:10:01

系统运维服务器

2012-10-22 13:30:35

2019-08-21 14:22:31

Linux服务器FTP

2010-08-31 15:04:39

2017-05-24 12:30:34

2010-10-09 09:18:59

Shell脚本

2012-05-08 13:59:23

2014-04-14 15:54:00

print()Web服务器
点赞
收藏

51CTO技术栈公众号