Linux
常用
管理语句
Shell命令(变量)
正则表达式
重定向
EXPECT
流程控制
函数
日志
SED
sed常用操作
sed组合命令
sed脚本
AWK
awk常用
awk流程控制
awk脚本
SSH
SSH密钥的批量分发与执行
SSH连接很慢
ACL文件访问控制
计划任务
常用语句
批量添加用户和密码
批量修改密码
临时和永久关闭Selinux
修改主机名
Linux内核参数
无人值守安装
ISO镜像(mondorescue)
软件管理
SYSTEM服务
YUM本地仓
存储管理
逻辑卷LVM
磁盘阵列RAID
备份恢复相关命令
fio磁盘性能测试
内存管理
IPTABLES防火墙
FIREWALLD防火墙
curl请求
Linux问题
漏洞修复
限制网卡带宽
CentosYUM源
rsyslog 占用内存过高
df -h 卡住解决
Linux故障问题
网络配置
升级内核
Openssl生成证书
CENTOS6升级7
本文档使用MrDoc发布
返回首页
-
+
SSH密钥的批量分发与执行
2019年11月15日 11:09
admin
##方法一:expect ###安装expect工具 yum -y install expect ###expect脚本 SERVER_PAWD=密码 SERVER_LOG='./ssh.log' cat $0 | grep ^\#SSHSERVER | awk '{print $3,$4}' | while read SERVER_USER SERVER_IP do /usr/bin/expect > $SERVER_LOG <<-EOF spawn ssh-copy-id -f -o ConnectTimeout=5 $SERVER_USER@$SERVER_IP expect { "yes/no" { send "yes\r"; exp_continue } #exp_continue 附加于某个 expect 判断项之后,可以使该项被匹配后,还能继续匹配该 expect 判断语句内的其他项。 -nocase "password:" { send "$SERVER_PAWD\r" } #-nocase 不区分大小写 } expect eof #interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。 #expect eof 结束expect匹配。一般为远程连接时,连接中断会报此错。在此处出现理解为interact已经退出expect捕获信息了,再次执行expect eof即会报错。 EOF SERVER_STATUS=`cat $SERVER_LOG | grep "Number of key(s) added" | wc -l` if [ $SERVER_STATUS -gt "0" ];then echo -e "$SERVER_IP \[\033[32m ok \033[0m\]" else echo -e "$SERVER_IP \[\033[31m fail \033[0m\]" fi done #SSHSERVER1 raspberry pi 192.168.31.105 #SSHSERVER2 CENTOS1 root 192.168.31.87 #SSHSERVER3 CENTOS2 root 192.168.31.146 #SSHSERVER4 CENTOS3 root 192.168.31.38 #SSHSERVER5 CENTOS4 root 192.168.31.192 ------------ ##方法二:sshpass ###安装sshpass工具 yum -y install sshpass ###免交互创建密钥对 ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" #ssh-keygen:生成密钥对命令 #参数说明 -t:指定密钥对的密码加密类型(rsa,dsa两种) -f:指定密钥对文件的生成路径包含文件名 -P(大写):指定密钥对的密码(密语) 程序同时要求输入一个密语字符串(passphrase),空表示没有密语(主机密钥的密语必须为空)。 密语和口令(password)非常相似,但是密语可以是一句话,里面有单词、标点符号、数字、空格或任何你想要的字符。 #支持的非对称加密算法 1.rsa,基于大数的质数分解难度的算法,一般都是2048位 2.dsa,基于离散对数的难度,1024位 3.ecdsa,椭圆曲线算法,支持256,384,521位 ###免交互方式批量分发公钥 sshpass -p1111111 ssh-copy-id -o ConnectTimeout=5 -i /root/.ssh/id_rsa.pub -p 端口 用户@IP #参数说明 -p:密码 -o:ConnectTimeout为连接超时时间,单位秒 ##SSH问题: >####一、SSH配置AUTHORIZED_KEYS后仍然需要输入密码 报userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes错误 ####解决: ssh不推荐使用dsa加密的秘钥,但是处于一些原因无法更换,所以: 1.打开ssh_config文件: vim /etc/ssh/ssh_config >2.将如下设置添加到ssh_config末尾: PubkeyAcceptedKeyTypes +ssh-dss
分享到: