[自动化]ssh自动化免密访问配置
ssh简介
SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA、DSA等
- RSA:非对称加密算法,其安全性基于极其困难的大整数的分解(两个素数的乘积);
- DSA:也是非对称加密算法,其安全性基于整数有限域离散对数难题;
ssh免密登录原理
- 客户端发出认证请求;
- 服务器端使用客户端发送的公钥对一个随机的256位的字符串进行加密,并发送给 客户端;
- 客户端使用私钥对字符串进行解密,并生成一个MD5值发送给服务器端;
- 服务器端根据原始随机字符串生成MD5值进行匹配, 确认客户端身份;
- 至此, 双方互相确认对方身份并建立加密信道, 可以正式进行安全通信。
脚本功能:该脚本实现执行脚本的主机
与其它主机免密登陆。
配置脚本
vim /root/password_free_conf.sh
#!/bin/bash
# check args count
if test $# -ne 3; then
echo -e "\nUsage: sh $0 < hosts file path> < username > < password >\n"
exit 1
fi
# check hosts file
hosts_file=$1
if ! test -e $hosts_file; then
echo "[ERROR]: Can't find hosts file"
exit 1
fi
username=$2
password=$3
# check sshkey file
sshkey_file=~/.ssh/id_rsa.pub
if ! test -e $sshkey_file; then
expect -c "
spawn ssh-keygen -t rsa
expect \"Enter*\" { send \"\n\"; exp_continue; }
"
fi
# get hosts list
hosts=$(cat $1)
echo "======================================================================="
echo "hosts: "
echo "$hosts"
echo "======================================================================="
function ssh_key_copy(){
# delete history
sed "/$1/d" -i ~/.ssh/known_hosts
# start copy
expect -c "
set timeout 100
spawn ssh-copy-id $username@$1
expect {
\"yes/no\" { send \"yes\n\"; exp_continue; }
\"*assword\" { send \"$password\n\"; }
\"already exist on the remote system\" { exit 1; }
}
expect eof
"
}
# auto sshkey pair
for host in $hosts; do
echo "======================================================================="
# check network
ping -i 0.2 -c 3 -W 1 $host >& /dev/null
if test $? -ne 0; then
echo "[ERROR]: Can't connect $host"
exit 1
fi
cat /etc/hosts | grep -v '^#' | grep $host >& /dev/null
if test $? -eq 0; then
hostaddr=$(cat /etc/hosts | grep -v '^#' | grep $host | awk '{print $1}')
hostname=$(cat /etc/hosts | grep -v '^#' | grep $host | awk '{print $2}')
ssh_key_copy $hostaddr
ssh_key_copy $hostname
else
ssh_key_copy $host
fi
echo ""
done
hosts文件
vim /root/hosts.text
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
执行配置
sh $0 < hosts file path> < username > < password >
for example:
sh /root/password_free_conf.sh /root/hosts.text root 123456
[自动化]ssh自动化免密访问配置的更多相关文章
- 2019-10-11 ubuntu ssh远程免密登录配置及配置别名
在客户端能正常远程访问服务端的前提下. 客户端: 1)配置免密 执行 ssh-keygen 即可生成 SSH 钥匙,回车三次. 执行 ssh-copy-id user@remote,可以让远程服务器记 ...
- Hadoop SSH+IP、SSH+别名 免密登录配置
1.为什么要进行 SSH 无密码验证配置? Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个Da ...
- Hadoop起步之图解SSH、免密登录原理和实现
1. 前言 emmm….最近学习大数据,需要搭建Hadoop框架,当弄好linux系统之后,第一件事就是SSH免密登录的设置.对于SSH,我觉得使用过linux系统的程序员应该并不陌生.可是吧,用起来 ...
- SSH实现免密登陆
SSH实现免密登陆配置 ssh实现免密码登录的配置过程,主要分为以下几个步骤: serverA生成密钥,包括私钥和公钥 serverA将公钥传到serverB上 serverA上配置serverB登陆 ...
- 别名alias永久生效别名alias永久生效;虚拟机的NAT模式,进行静态IP配置,并A、B的实现免密访问
别名alias永久生效 1.打开cd /etc/profile.d 目录 新建文件my_alias.sh 2.my_alias.sh里面添加 alias p=’poweroff -h’ alias r ...
- ssh免密登陆配置
目录 ssh免密登陆 在A工作站上输入 B服务器上输入 登陆 ssh初次登陆询问 1.单次取消 2.ansible中增加链接参数 3.修改ansible配置参数[推荐] 4.修改服务器上的ssh_co ...
- SSH免密登录配置
SSH免密登录配置 本地生成密钥文件: $ ssh-keygen 输出: Generating public/private rsa key pair. Enter file in which to ...
- SSH免密登陆配置过程和原理解析
SSH免密登陆配置过程和原理解析 SSH免密登陆配置过很多次,但是对它的认识只限于配置,对它认证的过程和基本的原理并没有什么认识,最近又看了一下,这里对学习的结果进行记录. 提纲: 1.SSH免密登陆 ...
- SSH之免密登陆
又来了,上头让小轩我在服务器中写一个Shell脚本,主要用来在机器B中定时备份机器A中的一些文件.那么,小轩是怎么想的呢? 在小轩的知识库里,现在有scp和ssh两个玩具.别的还真没有其他什么东西了. ...
随机推荐
- webstorm 配置git代码项目管理工具
1.下载最新的webStrom11安装包安装 https://confluence.jetbrains.com/display/WI/Previous+WebStorm+Releases/ 2.破解w ...
- Nginx 反向代理解决跨域问题分析
当你遇到跨域问题,不要立刻就选择复制去尝试.请详细看完这篇文章再处理 .我相信它能帮到你. 分析前准备: 前端网站地址:http://localhost:8080 服务端网址:http://local ...
- NPOI导出例子
public static string ExportAOrder(ExportData data) { var cellHeard = new Dictionary<string, strin ...
- 【解决了一个小问题】gin框架中出现如下错误:"[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 500"
POST到数据到一条gin框架的接口后,客户端收到400错误,并且返回了业务中返回的"decode json fail". 关键代码是: func report(c *gin.Co ...
- pytest文档4-fixture之conftest.py
用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然这就无法用setup和teardown来实现了.fixture之conftest.py就是自定义测试用例的预置条件 1.firture相对于 ...
- 浅析Java中的线程池
Java中的线程池 几乎所有需要异步或并发执行任务的程序都可以使用线程池,开发过程中合理使用线程池能够带来以下三个好处: 降低资源消耗 提高响应速度 提高线程的可管理性 1. 线程池的实现原理 当我们 ...
- cocos2dx 入口函数分析
以下是main函数最开始的两段,也是cocos2d一开始执行的地方: AppDelegate app; return Application::getInstance()->run(); 接下来 ...
- Docker 实操
---恢复内容开始--- 一.简介 Linux容器作为一类操作系统层面的虚拟化技术成果,旨在立足于单一Linux主机交付多套隔离性Linux环境.与虚拟机不同,容器系统并不需要运行特定的访客操作系统. ...
- TCP长连接实践与挑战
点这里立即申请 本文介绍了tcp长连接在实际工程中的实践过程,并总结了tcp连接保活遇到的挑战以及对应的解决方案. 作者:字节跳动终端技术 --- 陈圣坤 概述 众所周知,作为传输层通信协议,TCP是 ...
- PyTorch 1.4 中文文档校对活动正式启动 | ApacheCN
一如既往,PyTorch 1.4 中文文档校对活动启动了! 认领须知 请您勇敢地去翻译和改进翻译.虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错--在大部分情况下,我们的 ...