介绍:我们在部署无密码访问时,如果手工输入.很费时间.下面方法用于自动化生成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 3.2.9 方便快捷!
原理: 是两台机器(web-1和web-2)经过预先设置好经过认证的key文件,双方互相访问时,进行自动认证,从而实现互信。... 机器 p1 p2 之间建立 互信 p1 p2 的~/.ssh 目录下 生成 密钥文件 ssh-keygen -t rsa
12. Linux 服务器的安全性:本文档介绍了如何使用 Expect 脚本来维护 Linux 服务器的安全性,包括批量修改密码、添加新用户等操作。 本文档介绍了如何使用 Expect 脚本来批量修改远程 Linux 服务器的密码,并对 ...
mysql mha ssh互信脚本,1.sh,用法,解决互信配置权限不足,手动操作麻烦问题。
在Hadoop集群的安装配置中,这种SSH无密码登录尤其重要,因为它简化了节点间的通信,比如在Master和Slave之间进行数据同步和命令执行。例如,对于两个节点的Hadoop集群,可以按照以下步骤设置: 1. **配置hosts文件...
Linux SSH 使用 SSH 公钥密钥自动登录 Linux 服务器 本文档将介绍如何使用 SSH 公钥密钥自动登录 Linux 服务器,解决频繁输入用户名和密码的问题。下面是相关的知识点: 1. SSH 公钥密钥生成:使用 `ssh-keygen` ...
安装并运行此程序后,Windows用户就能通过图形化界面或者命令行模式与Linux服务器建立安全连接,执行各种远程管理任务。 总的来说,SSH Secure Shell是一款强大的工具,它为Linux服务器的远程管理提供了安全、便捷...
对于开发人员来说大多数时候都需要登录linux服务器,每次需要输入密码很是麻烦,shell脚本可以将每次输入验证步骤简化,只需要切换到脚本所在目录,输入“ ./ ssh_login.sh”即可实现自动登录
linux自动升级ssl&ssh脚本
标题中的“登录Linux服务器ssh软件”指的是使用SSH协议的客户端应用程序,允许用户从本地计算机连接到远程Linux服务器。这些客户端软件通常在Windows等非Linux操作系统上使用,因为这些系统原生并不包含SSH客户端。 ...
Linux SSH 使用ssh公钥密钥自动登录Linux服务器是一种常见的安全远程访问方法,它避免了每次登录时手动输入用户名和密码的繁琐过程。这种方法基于非对称加密,通过一对密钥——公钥和私钥——来确保只有拥有相应私钥...
之前在《 记录一则Linux SSH的互信配置过程 》、《 Vertica 7.1安装佳实践(RHEL6.4) 》中,都分别提到了配置ssh互信的方法,本文在此基础上进一步整理配置ssh互信的方法,目的是将步骤尽可能的简化,从而更加适合...
Linux服务器SSH访问工具,主要指的是SecureCRT,这是一个广泛使用的终端模拟器软件,尤其在IT行业中,对于远程管理和控制Linux服务器,SSH(Secure Shell)是一种安全的网络协议,它提供了加密的网络通信,确保数据...
标题中的“shell自动化部署批量建立用户和批量SSH配置”指的是使用Linux Shell脚本来自动化创建多个用户账户,并且配置这些用户可以使用SSH进行无密码登录。这个过程在IT运维中非常常见,特别是在设置服务器集群或者...
### 基于Python轻松实现批量SSH工具管理多台Linux服务器 #### 概述 本文档旨在介绍一种利用Python编写的工具——`JSSH`,该工具能够帮助用户轻松地管理多台Linux服务器,实现批量的SSH连接、命令执行以及文件上传...
`ssh2.exe`和`sftp2.exe`是SSH客户端程序,用于与远程SSH服务器建立连接。`ssh2.exe`允许用户打开一个命令行会话,直接在远程主机上执行命令,而`sftp2.exe`则提供了Secure File Transfer Protocol(SFTP)服务,让...
服务器互信脚本文档
配置ssh互信
做好ip清单,每行一个ip,ssh批量登录执行命令