`
dcj3sjt126com
  • 浏览: 1871667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

    连接Linux服务器工具SSH 3.2.9 方便快捷!

    Linux机器之间建立互信

    原理:  是两台机器(web-1和web-2)经过预先设置好经过认证的key文件,双方互相访问时,进行自动认证,从而实现互信。...  机器 p1 p2 之间建立 互信  p1 p2 的~/.ssh 目录下 生成 密钥文件 ssh-keygen -t rsa  

    远程批量修改linux服务器密码的脚本归类.pdf

    12. Linux 服务器的安全性:本文档介绍了如何使用 Expect 脚本来维护 Linux 服务器的安全性,包括批量修改密码、添加新用户等操作。 本文档介绍了如何使用 Expect 脚本来批量修改远程 Linux 服务器的密码,并对 ...

    ssh互信脚本1.sh

    mysql mha ssh互信脚本,1.sh,用法,解决互信配置权限不足,手动操作麻烦问题。

    030102设置ssh互信及无密码登录

    在Hadoop集群的安装配置中,这种SSH无密码登录尤其重要,因为它简化了节点间的通信,比如在Master和Slave之间进行数据同步和命令执行。例如,对于两个节点的Hadoop集群,可以按照以下步骤设置: 1. **配置hosts文件...

    LinuxSSH使用ssh公钥密钥自动登陆linux服务器.pdf

    Linux SSH 使用 SSH 公钥密钥自动登录 Linux 服务器 本文档将介绍如何使用 SSH 公钥密钥自动登录 Linux 服务器,解决频繁输入用户名和密码的问题。下面是相关的知识点: 1. SSH 公钥密钥生成:使用 `ssh-keygen` ...

    SSH远程连接linux服务器工具

    安装并运行此程序后,Windows用户就能通过图形化界面或者命令行模式与Linux服务器建立安全连接,执行各种远程管理任务。 总的来说,SSH Secure Shell是一款强大的工具,它为Linux服务器的远程管理提供了安全、便捷...

    shell命令ssh自动登录linux服务器

    对于开发人员来说大多数时候都需要登录linux服务器,每次需要输入密码很是麻烦,shell脚本可以将每次输入验证步骤简化,只需要切换到脚本所在目录,输入“ ./ ssh_login.sh”即可实现自动登录

    linux自动升级ssl&ssh脚本

    linux自动升级ssl&ssh脚本

    登录linux服务器ssh软件

    标题中的“登录Linux服务器ssh软件”指的是使用SSH协议的客户端应用程序,允许用户从本地计算机连接到远程Linux服务器。这些客户端软件通常在Windows等非Linux操作系统上使用,因为这些系统原生并不包含SSH客户端。 ...

    LinuxSSH使用ssh公钥密钥自动登陆linux服务器收集.pdf

    Linux SSH 使用ssh公钥密钥自动登录Linux服务器是一种常见的安全远程访问方法,它避免了每次登录时手动输入用户名和密码的繁琐过程。这种方法基于非对称加密,通过一对密钥——公钥和私钥——来确保只有拥有相应私钥...

    Linux快速配置集群SSH互信

    之前在《 记录一则Linux SSH的互信配置过程 》、《 Vertica 7.1安装佳实践(RHEL6.4) 》中,都分别提到了配置ssh互信的方法,本文在此基础上进一步整理配置ssh互信的方法,目的是将步骤尽可能的简化,从而更加适合...

    linux服务器SSH访问工具

    Linux服务器SSH访问工具,主要指的是SecureCRT,这是一个广泛使用的终端模拟器软件,尤其在IT行业中,对于远程管理和控制Linux服务器,SSH(Secure Shell)是一种安全的网络协议,它提供了加密的网络通信,确保数据...

    shell自动化部署批量建立用户和批量SSH配置

    标题中的“shell自动化部署批量建立用户和批量SSH配置”指的是使用Linux Shell脚本来自动化创建多个用户账户,并且配置这些用户可以使用SSH进行无密码登录。这个过程在IT运维中非常常见,特别是在设置服务器集群或者...

    基于python轻松实现批量ssh工具管理多台linux服务器.docx

    ### 基于Python轻松实现批量SSH工具管理多台Linux服务器 #### 概述 本文档旨在介绍一种利用Python编写的工具——`JSSH`,该工具能够帮助用户轻松地管理多台Linux服务器,实现批量的SSH连接、命令执行以及文件上传...

    SSH Secure Shell服务器Linux连接

    `ssh2.exe`和`sftp2.exe`是SSH客户端程序,用于与远程SSH服务器建立连接。`ssh2.exe`允许用户打开一个命令行会话,直接在远程主机上执行命令,而`sftp2.exe`则提供了Secure File Transfer Protocol(SFTP)服务,让...

    服务器互信脚本文档

    服务器互信脚本文档

    配置ssh互信

    配置ssh互信

    ssh批量登录执行命令脚本

    做好ip清单,每行一个ip,ssh批量登录执行命令

Global site tag (gtag.js) - Google Analytics