shell(20) : 自动化配置ssh免密登录

参考 : 

        centos7自动化ssh免密 - 物是人非a - 博客园

        shell一键生成密钥脚本_mrxyy的博客-CSDN博客_密钥脚本        

        https://blog.csdn.net/qq_42591334/article/details/109604093 

expect安装包

>tcl-8.5.7-6.el6.x86_64.rpm
百度网盘 请输入提取码

>expect-5.44.1.15-5.el6_4.x86_64.rpm
百度网盘 请输入提取码

注 : 生成ssh公钥路径必须为/root/.ssh目录,其他目录传输过去无效

生成[/root/send_ssh_pub.sh]文件,内容如下

#!/usr/bin/bash
while read line
do
      ip=`echo $line |awk '{print $1}'`
      pass=`echo $line |awk '{print $2}'`
expect <<EOF
     spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip
       expect {
            "yes/no" { send "yes\n";exp_continue}  
            "password" { send "$pass\n"}
       }
       expect eof
EOF
done < /root/serverInfo.txt

注 : ssh-copy-id无法执行可以参考

cat  /root/.ssh/id_rsa.pub | ssh root@192.168.1.1 'cat  >> .ssh/authorized_keys'

生成run.sh 

#!/bin/sh

# 报错停止运行
set -e

# 修改 /etc/hosts
cat >> /etc/hosts << 'EOF'
192.168.1.1 localhost
192.168.1.1 master
192.168.1.2 slave1
192.168.1.3 slave2
EOF

# 生成公钥
ssh-keygen -t rsa -N '' <<EOF
/root/.ssh/id_rsa
yes


EOF

# 生成账号信息txt
cat > /root/serverInfo.txt << 'EOF'
192.168.1.1 passwd
192.168.1.2 passwd
192.168.1.3 passwd
EOF 

# 安装expect
rpm -ivh tcl-8.5.7-6.el6.x86_64.rpm 
rpm -ivh expect-5.44.1.15-5.el6_4.x86_64.rpm


# 发送公钥
chmod +x /root/send_ssh_pub.sh
/root/send_ssh_pub.sh

# 测试
ssh root@192.168.1.2 "date"

# 清除
rm -rf /root/serverInfo.txt
rm -rf /root/send_ssh_pub.sh

echo "ssh免密配置完成"

执行

sh run.sh

注 : ssh端口不是默认的22时发送公钥得指定端口,如下

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub "-p 23 root@$ip"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值