shell-服务器间的免密连接

  • 执行环境:ubt 2204LTS
  • 安装expect命令
[root@elk91 ~]# apt -y install expect
  • 编写脚本
[root@elk91 ~]# cat > password_free_login.sh <<'EOF'
#!/bin/bash

# 创建密钥对
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa -q

# 声明你服务器密码,建议所有节点的密码均一致,否则该脚本需要再次进行优化
export mypasswd=1

# 定义主机列表
list=(10.0.0.91 10.0.0.92 10.0.0.93)

# 配置免密登录,利用expect工具免交互输入
for i in ${list[@]};do
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i
  expect {
    \"*yes/no*\" {send \"yes\r\"; exp_continue}
    \"*password*\" {send \"$mypasswd\r\"; exp_continue}
  }"
done
EOF
[root@elk91 ~]# bash password_free_login.sh
posted @ 2025-03-20 16:21  丁志岩  阅读(25)  评论(0)    收藏  举报