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

标签: linux 服务器 ssh | 发表时间:2014-12-18 11:10 | 作者:dcj3sjt126com
出处:http://www.iteye.com

介绍:我们在部署无密码访问时,如果手工输入.很费时间.下面方法用于自动化生成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

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [linux 服务器 ssh] 推荐:

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

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

linux配置ssh+rsync

- - CSDN博客推荐文章
sftp    文件共享 类似ftp  ssh  secure file transfer client. scp    文件共享 类似cp. #PermitRootLogin yes    改成no 禁止root直接登录. #Port 22    改变ssh的默认端口号   要打开注释. 登录  ssh  [email protected]  然后输入密码就好了.

使用纯java ssh方式连接linux服务器,并用此方式部署war到linux的tomcat下

- - Linux - 操作系统 - ITeye博客
纯java代码使用ssh方式登录linux服务. 实际应用中,可以使用这种方式上传部署web工程war包 并且部署启动tomcat 一个自动化完成所有工作 起到节省时间作用. 1.去 官网下载最新的jar包. 下面是我的java code 例子. /** * java ssh登录linux以后的一些操作方式 * @author liuxy * */ public class SchUnitJsch extends SchUnit{.

Linux SSH帐号权限限制

- Jona - 细节的力量
来源:http://feedproxy.google.com/~r/JoysBoy/~3/TdH16qMVTJk/. 在天朝用SSH来Proxy是家常便饭了,别跟我说你不知道怎么用. 我自己也经常在vps上开一些ssh帐号给朋友用,一般都把shell设置为nologin,这样来禁止他们登入服务器. 不过有一点很麻烦,密码只能由我设,当然也只能设个简单的,朋友不可能把自己平常用的密码随便告诉我,改密码也只能由我操作.

centos linux 服务器安全

- - 操作系统 - ITeye博客
我们必须明白:最小的权限+最少的服务=最大的安全. 所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小话,这样才能保证服务器最大的安全. 下面是CentOS服务器安全设置,供大家参考. 一、注释掉系统不需要的用户和用户组. 注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦.

Linux下修改ssh端口和禁止root远程登录

- - 记录开发点点滴滴
1、编辑/etc/ssh/ssh_config文件:. 将被注释掉的Port 22前的注释符号“#”去掉,并将22改为8888,保存退出. 2、编辑/etc/ssh/sshd_config文件:. 将Port 22改为8888,并找到PermitRootLogin,将后面的yes改为no,这样root就不能远程登录了,保存退出.

Linux服务器性能评估

- peigen - 唐福林-博客雨
一、影响Linux服务器性能的因素. 影响性能因素 评判标准 好 坏 糟糕 CPU user% + sys%< 70% user% + sys%= 85% user% + sys% >=90% 内存 Swap In(si)=0 Swap Out(so)=0. Per CPU with 10 page/s More Swap In & Swap Out 磁盘 iowait % < 20% iowait % =35% iowait % >= 50%.

[转]Linux下安装Oracle11g服务器

- - 小鸥的博客
                     Linux服务器:SuSe10 sp2 64位.                      Oracle服务器:Oracle11gR2 64位. Linux安装Oracle系统要求. 一般为内存的2倍,例如:1G的内存可以设置swap 分区为3G大小.  2.修改操作系统核心参数.

Linux服务器性能评估

- - 操作系统 - ITeye博客
一、影响Linux服务器性能的因素. 二、系统性能评估标准. %user:表示CPU处在用户模式下的时间百分比. %sys:表示CPU处在系统模式下的时间百分比. %iowait:表示CPU等待输入输出完成时间的百分比. swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM.