多主机ssh互信

生成密钥并分发公钥,满足ansible环境的授信关系,把所有主机的ip、用户名、密码都加进来

# cat init_key.py

#! /usr/bin/env python # coding: utf-8 ########################################################### # description: 生成密钥并分发公钥,把所有主机的ip、用户名、密码都加进来 ########################################################### import os #安装expect及依赖 os.system("rpm -ivh --force /ops/soft/system_base/tcl-8.5.13-8.el7.x86_64.rpm") os.system("rpm -ivh --force /ops/soft/system_base/expect-5.45-14.el7_1.x86_64.rpm") os.system("python /ops/generate_rsa_key.py") os.system("/usr/bin/expect /ops/send_public_keys.expect 10.100.2.42 '123.abc'") os.system("/usr/bin/expect /ops/send_public_keys.expect 10.100.2.33 '123.abc'") os.system("/usr/bin/expect /ops/send_public_keys.expect 10.100.2.29 '123.abc'")


# cat /do1cloud/devops/bin/generate_rsa_key.py
#! /usr/bin/env python
# coding: utf-8
###########################################################
# description: 生产秘钥
###########################################################

import os

os.system('/bin/ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa')



cat /ops/send_public_keys.expect
#!/usr/bin/expect

###########################################################
# description: 公钥发布到其他机器上
###########################################################

set timeout 10
set remote_hostname [lindex $argv 0]
set password [lindex $argv 1]

spawn ssh-copy-id root@$remote_hostname
expect {
"(yes/no)?"
{
send "yes "
expect "*assword:" { send "$password "}
}
"*assword:"
{
send "$password "
}
}

expect eof

原文地址:https://www.cnblogs.com/52py/p/14172668.html