shell脚本配置ssh免密登陆
通过shell脚本配置免密登陆,分为两个脚本,一个是配置文件config.env,一个是正式脚本sshkey.sh。
# config.env
export HOST_USER=(root)
export PASSWD=(a)
export SSH_HOST=(192.168.165.15 192.168.165.16 192.168.165.165)
以上congfig.env文件中,SSH_HOST参数可配置多个IP,可配置不同的用户
sshkey.sh脚本内容大致如下:
- 在本地用rsa加密方式生成对应的密钥,并将公钥写入到authorized_keys文件中;
- 遍历多台远程服务器,登陆远程服务器生成密钥,并将公钥文件考本到本机,写入本机的authorized_Keys文件中;
- 遍历多台远程服务器,将本地的authorized_Keys文件分别分发到各台服务器上。
#!/bin/bash
# sshkey.sh
source config.env createLocalKey () {
/usr/bin/expect <<_oo_
spawn ssh-keygen -t rsa -b -N "" -f $HOME/.ssh/id_rsa
expect "Overwrite"
send "y\r"
expect eof
_oo_
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
} createRemoteKey () {
/usr/bin/expect <<_oo_
spawn ssh $HOST_USER@$ip
expect {
"yes/no" { send "yes\r";exp_continue }
"*assword:" { send "$PASSWD\r" }
}
sleep
send "ssh-keygen -t rsa -b 2048 -N '' -f $HOME/.ssh/id_rsa\r"
expect {
"(y/n)" { send "y\r" }
}
sleep
send "exit\r"
expect eof
_oo_ /usr/bin/expect <<_oo_
spawn scp $HOST_USER@$ip:$HOME/.ssh/id_rsa.pub /tmp/id_rsa$ip.pub
expect {
"yes/no" { send "yes\r";exp_continue }
"*assword:" { send "$PASSWD\r" }
}
expect eof
_oo_ cat /tmp/id_rsa$ip.pub >> $HOME/.ssh/authorized_keys
rm -rf /tmp/id_rsa$ip.pub
} copyToRemote () {
/usr/bin/expect <<_oo_
spawn scp $HOME/.ssh/authorized_keys $HOST_USER@$ip:$HOME/.ssh/authorized_keys
expect {
"yes/no" { send "yes\r";exp_continue }
"*assword:" { send "$PASSWD\r" }
}
expect eof
_oo_
} pullPubKey () {
for ip in ${MHA_HOST[@]};do
if [ $ip == `ifconfig eth0|grep -oP '(?<=inet addr:)\S+'` ];then
echo "It's local host"
else
createRemoteKey
fi
done
} pushAuthorizedKeys () {
for ip in ${MHA_HOST[@]};do
if [ $ip == `ifconfig eth0|grep -oP '(?<=inet addr:)\S+'` ];then
echo "It's local host"
else
copyToRemote
fi
done
} taskMain () {
createLocalKey
pullPubKey
pushAuthorizedKeys
} red_echo () { echo -e "\033[031;1m$@\033[0m"; }
green_echo () { echo -e "\033[032;1m$@\033[0m"; } taskMain; rc=$?
if [ $rc -ne ] ;then
echo "$(red_echo Config ssh without password failed!)"
else
echo "$(green_echo Config ssh without password success!)"
fi
exit $rc
如有更好的解决方案,望留言指出,谢谢
shell脚本配置ssh免密登陆的更多相关文章
- Shell脚本实现SSH免密登录及批量配置管理
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- 分布式配置 SSH 免密登陆
原地址忘记了,暂且记下 一.准备工作 1) 用客户端工具(ssh client或者putty)连接到linux服务器.在root用户下输入命令 vi /etc/hosts,用vi编辑hosts文件,如 ...
- Linux多台主机间配置SSH免密登陆
1.安装ssh. sudo apt-get install ssh. 安装完成后会在~目录(当前用户主目录,即这里的/home/xuhui)下产生一个隐藏文件夹.ssh(ls -a 可以查看隐藏文件 ...
- Linux 配置SSH免密登陆
1.在hadoop01服务器上 通过ssh -keygen 生成公私钥 [ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa] 2.把公钥给hadoop02服务器 3. ...
- [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆
实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...
- ssh免密登陆配置
目录 ssh免密登陆 在A工作站上输入 B服务器上输入 登陆 ssh初次登陆询问 1.单次取消 2.ansible中增加链接参数 3.修改ansible配置参数[推荐] 4.修改服务器上的ssh_co ...
- SSH免密登陆配置过程和原理解析
SSH免密登陆配置过程和原理解析 SSH免密登陆配置过很多次,但是对它的认识只限于配置,对它认证的过程和基本的原理并没有什么认识,最近又看了一下,这里对学习的结果进行记录. 提纲: 1.SSH免密登陆 ...
- ssh免密登陆 2
应用场景之一:java 程序调用shell脚本,通过ssh 免密登陆数据库服务器,进行数据的抽取打包工作. 免密设置步骤: 1.客户端生成公私钥,在任意目录下执行命令ssh-keygen(一路回车默认 ...
- SSH免密登陆原理及实现
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.SSH简介 SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA.DSA等. RSA:非对称加密算法,其安全性基于极其困难 ...
随机推荐
- 手机端自适应布局demo
原型如下: 要求如下:适应各种机型 源码如下: <!DOCTYPE html > <html> <head> <meta http-e ...
- Erlang Process input queue
http://www.cnblogs.com/me-sa/archive/2011/11/05/erlang0012.html Erlang进程有自己的消息队列来保存接收到的消息,新接收到的消息放在队 ...
- [搜索]Trie树的实现
trie这种树也被称为线索,搜索树. 正如图 以下是用stl 的map来实现 class trie_item_c { public: trie_item_c(){} trie_item_c(const ...
- Boost_1_33_1沒有想像中的恐怖 (李维)
2006/11/16 下午 02:14:16原則上要先使用build.bat, 產生bjam.exe, 再編繹出library. 由於各編譯器不同, lib並無法共用! 編譯完成後:*.lib在 C: ...
- Docker + .NET Core(二)
原文:Docker + .NET Core(二) 前言: 环境:centos7.5 64 位 正文: 首先我们在宿主机上安装 .NET Core SDK sudo rpm --import https ...
- hbase 判断列族是否存在
public static boolean isExistColumnFamily(String tableName,String cf) throws IOException { if(isExis ...
- 【BZOJ 3676】[Apio2014]回文串
[链接] 链接 [题意] 给你一个字符串s. 定义一个子串的出现值为它出现的次数*字符串的长度. 让你求里面的回文子串的最大出现值 |s|<=3e5 [题解] 马拉车算法里面. 只有在回文往外扩 ...
- 微信上传素材 {"errcode":41005,"errmsg":"media data missing"} 解决方法和思路
哎lol 连跪两把 就来写写博客 今天遇到一个问题 ,微信公众号开发上传素材是提示报错 41005 errcode":41005,"errmsg":&q ...
- Function函数
一般大家都用这个写法来定义一个函数: function Name([parameters]){ functionBody }; //alert(typeof Name) // Function 当我们 ...
- C#中的String.Format介绍
关键字:C# string.format作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/15/csharp-string_for ...