#! /bin/sh#远程主机1(源主机)
src_host=$1
src_user=$2
src_passwd=$3#远程主机2(目标主机)
dst_host=$4
dst_user=$5
dst_passwd=$6src_pub=/root/.ssh/id_rsa.pub#在远程主机1上生成公钥
Keygen()
{expect << EOFspawn ssh $src_user@$src_host "test -f /root/.ssh/id_rsa.pub || echo CheckFalse "expect {"password:" {send "$src_passwd\n"}  eof { exit }}expect CheckFalse { exit 11 }EOFif [ $? -ne 11 ];then
echo -n "公钥已经存在,将直接拷贝……"
else
echo -n "公钥不存在,开始创建……"
expect << EOF
spawn ssh $src_user@$src_host "ssh-keygen -t rsa "
while {1} {expect {"password:" {send "$src_passwd\n"}               "yes/no*" {send "yes\n"}"Enter file in which to save the key*" {send "\n"}"Enter passphrase*" {send "\n"}"Enter same passphrase again:" {send "\n"}"Overwrite (y/n)" {send "n\n"}eof {exit} }}
EOF
fi
}#从远程主机1上拷贝公钥到远程主机2上
Get_pub ()
{expect << EOFspawn scp $src_user@$src_host:$src_pub $dst_user@$dst_host:/root/.ssh/$src_hostexpect {"password:" {send "$src_passwd\n";exp_continue}"password:" {send "$dst_passwd\n";exp_continue}"yes/no*" {send "yes\n";exp_continue}eof {exit}}EOF
}#在远程主机2上将内容追加到authorized_keys
Put_pub()
{expect << EOFspawn ssh $dst_user@$dst_host "mkdir -p /root/.ssh;chmod 700 /root/.ssh;cat /root/.ssh/$src_host >> /root/.ssh/authorized_keys;chmod 600 /root/.ssh/authorized_keys"expect {"password:" {send "$dst_passwd\n";exp_continue}"yes/no*" { send "yes\n";exp_continue}eof{exit}}
EOF
}Keygen
Get_pub
Put_pub

使用格式:

./ssh-turst.sh 192.168.1.1 root 123456 192.168.1.2 root 123456

当然也可以把这些主机IP,用户名,密码写入到一个config.ini文件里

192.168.1.1 root 123456 192.168.1.2 root 123456

192.168.1.1 root 123456 192.168.1.3 root 123456

然后使用xargs命令

xargs -n6 ./ssh-trush.ssh < config.file

转载于:https://blog.51cto.com/itech/1837519

全自动化建立SSH信任相关推荐

  1. 建立集群间ssh信任关系

    目的要求 一套集群里有10台主机,建立ssh信任关系,使集群内所有主机可以不输密码互相访问. 解决方法 1.在server1生成私钥 ssh-keygen ssh-copy-id root@192.1 ...

  2. 自动运维化tools篇2:通过SSH信任关系,批量修改LINUX密码

    通过SSH信任关系,批量修改LINUX密码    作者:IORI 原创 2007-2-28 15点 于CC 一 ============================================ ...

  3. Windows Server 2008与2012建立林信任关系

    当公司发展规模较大后,会有多个分公司或者合并收购其他公司的情况出现,这时候就会涉及到多个域以及员工工作调离的情况,这里就会牵涉到用户和计算机跨域的迁移.要跨域迁移,我们首先需要建立好两个域的林信任. ...

  4. ssh suse 配置_SUSE+linux+配置节点间的SSH信任关系

    配置节点间的SSH信任关系 (1)在节点1上 oracle@node1:~ > pwd /home/oracle oracle@node1:~ > mkdir .ssh oracle@no ...

  5. 9于word没有注册类_XPage系列这次升级后终于是全自动化注册了!

    点击上方蓝字关注我们 前言 作为 X-Library系列框架 的灵魂所在,XPage 开源两年以来,一直致力于降低Fragment使用的难度,努力实现一个Activity多Fragment的Andro ...

  6. Linux创建SSH信任关系

    Linux服务器创建信任关系可以解决远程执行命令.远程传输文件多次手工输入的麻烦.可以实现环境一键打包备份. 测试环境 SuSE 手工创建 假设服务器A与B间要建立信任关系.用户想从服务器A免密码登录 ...

  7. 关于如何在Android、Java等非微软平台上建立高信任的SharePoint应用程序

    关于如何在非微软平台上建立高信任的SharePoint应用程序 原文 :http://blogs.msdn.com/b/kaevans/archive/2014/07/14/high-trust-sh ...

  8. linux 授信_Linux 配置双机SSH信任

    一.实现原理 使用一种被称为"公私钥"认证的方式来进行ssh登录."公私钥"认证方式简单的解释是: 首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_ ...

  9. A股全自动化交易——从零到实盘20(完结)

    本文是"从零到实盘"系列的最后一篇文章,将介绍实现全自动实盘交易的最后一个步骤,即实现定时更新股票数据任务. schedule模块安装 我们使用schedule来实现定时任务,首先 ...

最新文章

  1. Static interface methods are only supported starting with Android N (--min-api 24): void okhttp3.log
  2. Python中的test测试
  3. getParameter的用法总结
  4. 一文读懂中国互联网的30年(整合版)
  5. 阿里云mariadb无法启动问题
  6. snowflake做主键 自增_自增ID算法snowflake - C#版
  7. python开发环境的搭建和设置
  8. r访问oracle数据库,R学习笔记之访问远程Oracle数据库
  9. maya2011安装方法图文详细教程及Unity下载
  10. 如何使用mapbox选择拾取地图要素
  11. DLNA 在自己的APP 中添加投屏功能
  12. plupload上传例子
  13. Echarts折线图曲线图和三维图
  14. 寄存器与锁存器的区别
  15. js字符串转与json对象类型转换
  16. git拉取分支的方法?
  17. 狂神说Java Linux笔记三(Vim使用及账号用户管理和进程)
  18. ACID靠什么保证的
  19. java实现裂变数据的营销分析_一张图说尽裂变营销究竟该怎么玩!
  20. 国标28181之服务端下发云台PTZ命令浅谈

热门文章

  1. js页面倒计时7天 java_javascript实现倒计时跳转页面
  2. mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解
  3. cjson使用_LiteOS云端对接教程01-cJSON组件使用教程
  4. dell 2r30服务器装系统,DELL服务器操作系统安装汇总.docx
  5. Java中需要全部小写的是,下列哪些是Java中常量的命名约定?A、全部为小写字母B、全部为大写字母C、大小写混合D、字与字之间...
  6. 2021年5月信息系统项目管理师上午真题
  7. An error occurred. connect() failed (111: Connection refused) while connecting to upstream
  8. springmvc数据验证
  9. Fabricjs一个简单强大的Canvas绘图库快速入门
  10. java-垃圾回收的并行与并发