当前位置:首页 > 开发 > 操作系统 > 正文

批量自动建立linux服务器之间的ssh互信

发表于: 2014-12-18   作者:dcj3sjt126com   来源:转载   浏览次数:
摘要: 介绍:我们在部署无密码访问时,如果手工输入.很费时间.下面方法用于自动化生成authorized_keys,免去了手工数据.方法: 利用expect编写sshkey.exp在远程主机上生成id_rsa,并重定向到本地.在利用noscp.exp.把文件复制到远程主机步骤:(本方法在centos6.4 上验证通过) 1 本地执行ssh-keygen -t rsa 2 编写脚本生成 authoriz

介绍:我们在部署无密码访问时,如果手工输入.很费时间.下面方法用于自动化生成authorized_keys,免去了手工数据.
方法: 利用expect编写sshkey.exp在远程主机上生成id_rsa,并重定向到本地.在利用noscp.exp.把文件复制到远程主机
步骤:(本方法在centos6.4 上验证通过)

1 本地执行
ssh-keygen -t rsa

2 编写脚本生成 authorized_keys (比如现在有cloud1 和 cloud2 服务器)

./sshkey.exp  cloud1 root root123 | grep ssh-rsa >> ~/.ssh/authorized_keys
./sshkey.exp  cloud2 root root123 | grep ssh-rsa >> ~/.ssh/authorized_keys


3 对于需要建立免密码输入的,把文件拷贝上去

./noscp.exp ~/.ssh/authorized_keys cloud1:~/.ssh root root123
./noscp.exp ~/.ssh/authorized_keys cloud2:~/.ssh root root123


4. 脚本说明
./sshkey.exp  主机名 用户名  密码  (在远程主机生成id_rsa)
./noscp.exp   本地文件 远程路径  远程用户密码   (无密码拷贝文件)
 
注意:
 每个主机上必须安装 openssh-clients

#!/usr/bin/expect

#sshkey.exp

if {$argc<3} {
 puts stderr "Usage: $argv0 host  user  passwd "
 exit 1
}

set host [ lindex $argv 0 ]
set user  [ lindex $argv 1 ]
set pwd  [ lindex $argv 2 ]

set timeout 30

 

#spawn ssh ${user}@${host} "rm -rf ~/.ssh/id_rsa*"
#
#expect {
# "*yes/no" { send "yes\r"; exp_continue }
# "*password:" { send "$pwd\r"; exp_continue  }
#}


spawn ssh ${user}@${host} "ssh-keygen -t rsa"

expect {
 "*yes/no" { send "yes\r"; exp_continue }
 "*password:" { send "$pwd\r"; exp_continue  }
 "Enter file in which to save the key*" { send "\n\r"; exp_continue }
 "Overwrite*" { send "y\n"; exp_continue } 
 "Enter passphrase (empty for no passphrase):" { send "\n\r"; exp_continue }
 "Enter same passphrase again:" { send "\n\r" }
}

spawn ssh ${user}@${host} "cat ~/.ssh/id_rsa.pub"

expect {
 "*yes/no" { send "yes\r"; exp_continue }
 "*password:" { send "$pwd\r"  }
}

expect eof

 

#!/usr/bin/expect

#noscp.exp

if {$argc<4} {
 puts stderr "Usage: $argv0 localfile  remotefile user passwd "
 exit 1
}

set localfile [ lindex $argv 0 ]
set remotefile  [ lindex $argv 1 ]
set user  [ lindex $argv 2 ]
set pwd  [ lindex $argv 3 ]

set timeout 30

spawn scp ${localfile} ${user}@${remotefile}

expect {
 "*yes/no" { send "yes\r"; exp_continue }
 "*password:" { send "$pwd\r" }
}

expect eof

 

批量自动建立linux服务器之间的ssh互信

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
RSA认证协议原理: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其
假设我有两台服务器:服务器A 和 服务器B 我需要在服务器A上访问服务器B,但是每次ssh到服务器B上都
很多时候,我们需要在两台Linux/Unix主机之间拷贝文件(夹),但需要手动输入密码 例如备份服务端(
很多时候,我们需要在两台Linux/Unix主机之间拷贝文件(夹),但需要手动输入密码 例如备份服务端(
很多时候,我们需要在两台Linux/Unix主机之间拷贝文件(夹),但需要手动输入密码 例如备份服务端(
很多时候,我们需要在两台Linux/Unix主机之间拷贝文件(夹),但需要手动输入密码 例如备份服务端(
(转载)http://bio-infor.blog.163.com/blog/static/107279815201251921532291/ putty是一款远程登
一个一个的建立用户帐户太痛苦,BPOS提供从文件“从文件导入用户” 在用户列表的右侧功能栏中,选择
为了安全性;ssh默认的连接超时时间很短;经常就是发个呆就断开了;事实上是可以修改超时时间的。
前言:   添加linux用户帐号,这个相对简单, 在面对集群, 许多机器的时候, 我们该如何去做和实现?
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号