第一步:安装openssh-clients
  yum install -y openssh-clients.x86_64
第二步:生成密钥
  ssh-keygen
第三步:拷贝公钥到其他机器
  ssh-copy-id hostname

 

使用脚本批量配置每台机器互相免密登录

  环境:centos6.10

  安装脚本编程交互工具expect

    yum install -y expect

  脚本编写,小例子

  

  generatekey.expect

#!/usr/bin/expect
spawn ssh-keygen
expect "*id_rsa*"
send \n
expect {
"*verwrite*" {
send y\n
expect "*passphrase*"
send \n
expect "*again*"
send \n
}
"*assphrase*" {
send \n
expect "*again*"
send \n
}
}
expect "*randomart*"
send_user "generate successful\n"

  

  copykey.expect

#!/usr/bin/expect
set from [lindex $argv 0]
set hostname [lindex $argv 1]
spawn ssh-copy-id $from@$hostname
expect {
"*assword*" { # "*password*"和左大括号之见一定要留间隔,否则不能识别
send wanger\n
expect "*check*"
send_user "add to $hostname successful!\n"
}
"*yes/no*" {
send yes\n
expect "*assword*"
send wanger\n
expect "*check*"
send_user "add to $hostname successful!\n"
}
"*check*" {
send_user "already added to $hostname!\n"
}
}

 

  machines:把所有机器的hostname添加到这个文件

tdh1
tdh2
tdh3
tdh4

 

  passphraseless_onetomutiple.sh

#!/bin/bash
dirname=/home/wanger/code/passphraseless
$dirname/generatekey.expect
input="$dirname/machines"
while read -r hostname
do
$dirname/copykey.expect $1 $hostname
done < $input

  

  passphraseless_all

#!/bin/bash
current_host=`hostname`
dirname=/home/wanger/code/passphraseless
input=$dirname/machines
# echo $current_host
$dirname/passphraseless_onetomutiple.sh wanger

for hostname in `awk  '$1' $input`
do
if [ $hostname != $current_host ];
then
  scp -r ../passphraseless wanger@$hostname:/home/wanger/code/
  $dirname/scp.expect $hostname
  ssh wanger@$hostname $dirname/passphraseless_onetomutiple.sh wanger
fi
done

  

  给执行权限后,在任意一台机器上执行./passphraseless_all即可

 

root版本配置代码在github上: https://github.com/cqdxwjd/code/tree/master/linux/shell/passphraseless_root

posted on 2018-10-18 20:48  京东  阅读(230)  评论(0编辑  收藏  举报