Centos下 自动化配置SSH免密码登陆
hosts文件,存储要部署的节点IP地址,其中以#开头表示注释掉
192.168.101.52
192.168.101.53
192.168.101.54
192.168.101.55
192.168.101.56
start.sh文件 在hosts文件中存储的所有节点上,生成默认的公钥和私钥,其中单个节点生成的脚本在keygen文件中
#!/bin/bash # ssh-keygen every node
hosts="hosts" if [ -f hosts ]
then
echo "Start ssh free"
else
echo "Please add hosts file"
exit 1
fi if [ $# != 2 ]
then
echo "USAGE:$0 user password!"
exit 1
else
username=$1
pawdname=$2
#login every node and ssh-keygen
for x in `cat hosts | sed "/^#.*/d"`
do
#echo ${x}
if [ -f keygen ]
then
expect keygen ${username} ${x} ${pawdname}
else
echo "ssh-keygen not exists"
echo "Please check it"
exit 1
fi
done
fi
keygen文件 在单个节点上生成公钥和私钥
#!/usr/bin/expect -f set timeout 2 set name [lindex $argv 0]
set node [lindex $argv 1]
set pawd [lindex $argv 2] spawn ssh ${name}@${node}
expect {
"*yes/no*" {send "yes\n";exp_continue}
"*password:" {send "$pawd\r"}
} expect "*${name}@${node}*"
send "ssh-keygen -t rsa -P ''\r"
expect "*ssh/id_rsa):"
send "\r"
expect {
"Overwrite (y/n)?" {send "y\n";exp_continue}
"*${name}@${node}*" {send "exit\r"}
}
expect eof
exit
备注:请注意,不同版本的提示输出不一样,可能需要读者手动更改keygen 文件中,expect后面的语句
上述几个文件,就可以完成在指定的节点上,生成密钥对了,下面来看下后续处理生成密钥的过程,代码如下:
author.sh 将start.sh脚本中生成的公钥写入到authorized_keys中,并将其上传到各个节点上,最后更改该文件的权限
#!/bin/bash
TMP="tmps"
rm -rf ${TMP}
mkdir ${TMP} TMP=`cd ${TMP};pwd`
HOST="hosts"
USER=""
PAWD="111111" if [ $# == 1 ]
then
USER=$1
elif [ $# == 2 ]
then
USER=$1
PAWD=$2
else
echo "USAGE:$0 username"
echo "USAGE:$0 username password"
exit 1
fi echo ${USER}" "${PAWD} #download id_rsa.pub from every node to the tmp dir
count=1
for x in `cat ${HOST}| sed "/^#.*/d"`
do
expect download ${USER} ${x} ${PAWD} "${TMP}/${count}"
count=`expr $count + 1`
done #let all id_rsa.pub into authorized_keys
count=1
for x in `ls ${TMP}/*`
do
if [ count == 1 ]
then
cat ${x} > /home/${USER}/.ssh/authorized_keys
else
cat ${x} >> /home/${USER}/.ssh/authorized_keys
fi
count=`expr $count + 1`
done #upload the authorized_keys to every node
for x in `cat ${HOST}| sed "/^#.*/d"`
do
expect upload ${USER} ${x} ${PAWD}
done #chmod 600 to authorized_keys
for x in `cat ${HOST}| sed "/^#.*/d"`
do
expect priority ${USER} ${x} ${PAWD}
done
download 和upload脚本比较简单,就当作给读者的练习题吧,如果需要完整的代码,欢迎从这里下载:https://github.com/nashiyue/fssh.git
Centos下 自动化配置SSH免密码登陆的更多相关文章
- CentOS 6.5配置SSH免密码登录
centos 系统对权限的设置非常微妙,如果权限设置大了则ssh 拒绝,如果权限小了,则ssh 更是被拒绝(我曾经配置好久没有打通,就是因为权限过大的原因) 参考链接:http://www.linux ...
- centos或者ubuntu设置ssh免密码登陆
1. 输入 # ssh-keygen -t rsa -P "" 然后一路回车 2.输入 # cat ~/.ssh/id_rsa.pub >> ~/.ssh/aut ...
- 密码配置配置SSH免密码登陆
在本文中,我们主要介绍密码配置的内容,自我感觉有个不错的建议和大家分享下 我的用户名是master 1.安装ssh(若没安装的话) sudo apt-get install ssh 2.配置为可以免密 ...
- 【linux】配置SSH免密码登陆
1.输入ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 其中''里的是登陆的密码,因为要设置免密码,所以''里是什么都没有的,空格也不行 2.输入 cat ~/.ss ...
- centos7 配置ssh 免密码登陆
我只有一台机器,是因为要配置hadoop分布式环境用,需要配置ssh 两个用户: zhangxs, root 首先在切换到zhangxs用户下 执行[ ssh-keygen -t rsa] [zhan ...
- Linux配置SSH免密码登陆
配置环境: 两台centos 6.4虚拟机,/etc/hosts配置如下 192.168.63.128 hadoop001 --master192.168.63.131 hadoop002 --sla ...
- 阿里云3台机器组成集群配置ssh免密码登陆
1 查询阿里云局网ip 注意:需要配置同一地区同一可用区的机器 才是一个局网 2 配置好hosts文件 3 hostname确认也是正确的 4 生成公钥私钥 三台机器同样操作 ssh-keygen - ...
- linux 配置ssh免密码登陆本机
1.安装 sudo apt-get install ssh 2.配置无密码登录 ssh-keygen -t rsa 遇到停顿按回车即可 进入/home/zeze/.ssh目录(隐藏目录,在winSCP ...
- 配置ssh免密码登陆
以root账户为例 准备两台以上的Linux服务器,我这里用的是s204,s205两台机器,多台同样的 先使用ssh登录试一下,如果没有安装则需要先安装一下 ssh s205会提示你输入密码 原理 ...
随机推荐
- ACM 第二十天
积性函数.杜教筛 练习题 莫比乌斯函数之和 51Nod - 1244 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出.梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号. ...
- lintcode-129-重哈希
129-重哈希 哈希表容量的大小在一开始是不确定的.如果哈希表存储的元素太多(如超过容量的十分之一),我们应该将哈希表容量扩大一倍,并将所有的哈希值重新安排.假设你有如下一哈希表: size=3, c ...
- iOS- Swift和Object-C的混合编程
1.前言 事实证明,在短时间内Swift还取代不了Object-C, 而且.... Apple Swift 开发小组的人说的:「We'll recommend people start with ...
- erlang中检查内存泄露
最近项目内存占用过多,检查一下erlang的内存使用情况. 1. 通过etop可以很方便得出erlang内存使用的情况 spawn(fun() -> etop:start([{output, t ...
- 修改表中的enum字段
alter table 表名 modify 字段名 enum('system','audit','account','secadmin') DEFAULT NULL;
- SQL Server中使用自定义指定顺序排序
比如需要对SQL表中的字段NAME进行如下的排序:张三(Z)李四(L)王五(W)赵六(Z) 如果想按 “ 张三.李四.王五.赵六”的顺序排序,则可以使用以下语句: order by charindex ...
- 后缀树的线性在线构建-Ukkonen算法
Ukkonen算法是一个非常直观的算法,其思想精妙之处在于不断加字符的过程中,用字符串上的一段区间来表示一条边,并且自动扩展,在需要的时候把边分裂.使用这个算法的好处在于它非常好写,代码很短,并且它是 ...
- BZOJ 2141 排队(树状数组套主席树)
解法很多的题,可以块套树状数组,可以线段树套平衡树.我用的是树状数组套主席树. 题意:给出一段数列,m次操作,每次操作是交换两个位置的数,求每次操作后的逆序对数.(n,m<=2e4). 对于没有 ...
- Django 2.0 学习(17):Django 用户认证(auth模块)
Django 用户认证(auth模块) 一.认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中:如果用户存在于数据库中,然后再验证用户输入 ...
- SQL 临时表或表变量替代游标(转)
1.如果表没有自动增长的标识列(int) 使用临时表 SELECT IDENTITY(int) NewID ,.. INTO #tmp FROM YouTable 2.表有标识列 使用表变量 INSE ...