Linux 集群使用 Shell 脚本自动完成免密登录
在部署 Linux 集群环境的时候,时钟同步 (NTP) 必定用到,而某些时候可能也需要用到主机免密登录,5 节点以下还可以手动配置,但如果节点规模较大,则需要考虑自动化了。
使用 Shell 脚本简单快速,上手容易。
代码如下,请自行按需要修改,比较容易理解。
#!/bin/bash # by liuxg # 2019.05.15 # passwdless.sh # echo # -n 不要在最后自动换行 # -e 处理特殊字符 # expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。 # expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。 # expect需要Tcl编程语言的支持,要在系统上运行expect必须首先安装Tcl。(源码安装要注意) yum install expect -y #安装expect echo "按enter键3次即可" # 生成秘钥(按enter键3次即可生成) ssh-keygen -t rsa SERVERS="172.18.74.167 172.18.74.169 172.18.74.172 172.18.74.173 172.18.74.174" #需要配置的主机名 #SERVERS="m1 m2 m3 n1 n2" PASSWORD=123456 #需要配置的主机登录密码 #将本机生成的公钥复制到其他机子上 #如果(yes/no)则自动选择yes继续下一步 #如果password:怎自动将PASSWORD写在后面继续下一步 auto_ssh_copy_id(){ expect -c "set timeout -1; spawn ssh-copy-id $1; expect { *(yes/no)* {send -- yes\r;exp_continue;} *password:* {send -- $2\r;exp_continue;} eof {exit 0;} }"; } ssh_copy_id_to_all(){ for SERVER in $SERVERS #遍历要发送到各个主机的ip do auto_ssh_copy_id $SERVER $PASSWORD done } ssh_copy_id_to_all