美文网首页
使用expect批量分发公钥 ssh免密码登录

使用expect批量分发公钥 ssh免密码登录

作者: phper1021 | 来源:发表于2017-02-07 10:45 被阅读293次

安装expect

yum install expect

生成公钥和私钥

cd ~/.ssh/
ssh-keygen -t rsa  #一直回车,采用默认的文件名字,使用空密码,会得到id_rsa和id_rsa.pub文件

批量部署ssh公钥到目标机器

cd /tmp/

ip.txt(前面是IP,后面是密码,用冒号:分割)    
===============================
192.168.44.11:vagrant
192.168.44.12:vagrant
192.168.44.13:vagrant
===============================
remote_operate.sh(把该文件的权限设置为777,防止在目标主机执行时报没有权限错误)
#!/bin/bash
if [ ! -d /root/.ssh ];then
mkdir /root/.ssh
fi
cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
===============================
batch_sshkey.sh(把id_rsa.pub和remote_operate.sh拷贝到目标机器上)
#!/bin/bash
for i in `cat /tmp/ip.txt`
do
ip=$(echo "$i"|cut -f1 -d":")
password=$(echo "$i"|cut -f2 -d":")

expect -c "
spawn scp /root/.ssh/id_rsa.pub /tmp/remote_operate.sh  root@$ip:/tmp/
        expect {
                \"*yes/no*\" {send \"yes\r\"; exp_continue}
                \"*password*\" {send \"$password\r\"; exp_continue}
                \"*Password*\" {send \"$password\r\";}
        }
"
expect -c "
spawn ssh root@$ip "/tmp/remote_operate.sh"
        expect {
                \"*yes/no*\" {send \"yes\r\"; exp_continue}
                \"*password*\" {send \"$password\r\"; exp_continue}
                \"*Password*\" {send \"$password\r\";}
        }
"
done
===============================

执行脚本

/bin/bash  batch_sshkey.sh

登录目标主机

ssh root@192.168.44.11
exit
ssh root@192.168.44.12
exit
ssh root@192.168.44.13
exit

原理

所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

总结

  • 实现免密码登录目标机器,只需要把当前机器的id_rsa.pub内容追加到目标机器的/root/.ssh/authorized_keys中去。
  • 使用except可以批量往目标机器分发文件,在目标机器执行分发过去的文件

相关文章

  • 使用expect批量分发公钥 ssh免密码登录

    安装expect 生成公钥和私钥 批量部署ssh公钥到目标机器 执行脚本 登录目标主机 原理 所谓"公钥登录",原...

  • SSH 相关的配置操作

    SSH 免密码登录 这里即A机想通过ssh免密码登录到B机。ssh 无密码登录需要使用到公钥和私钥。一般是在A机上...

  • ssh免密码登陆远程主机

    ssh免密码登陆远程主机 使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码...

  • ssh免密码登陆及其原理

    [TOC] ssh免密码登陆及其原理 1 示例 ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-k...

  • 6. 搭建 CentOS 集群 - 配置4台 CentOS 为

    配置本机 SSH 免密码登录 在本地 CentOS 中配置 SSH 免密码登录 生成本机的公钥,过程中不断敲回车即...

  • Mac下SSH免密登陆

    吐槽 每次ssh远程登录Mac都需要密码,很烦人,接下来我们就来使用公钥私钥的方式,来ssh远程登录Mac免密码。...

  • ssh-keygen

    ssh-keygen用来生成ssh公钥认证所需的公钥和私钥文件。 ssh秘钥登录特点:1.安全;2.免输密码。对于...

  • 如何通过 ssh 公钥连接主机

    如何通过 ssh 公钥连接主机 使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输...

  • ssh免密码登录的原理

    ssh免密码登录原理图 图解,server A免登录到server B:1.在A上生成公钥私钥。2.将公钥拷贝给s...

  • SSH免密码与别名登录

    免密码登录首先创建本机的公钥和私钥,使用命令ssh-keygen。 默认生成的公钥名为id_rsa.pub ,私钥...

网友评论

      本文标题:使用expect批量分发公钥 ssh免密码登录

      本文链接:https://www.haomeiwen.com/subject/cgmpittx.html