引言
??最近在搭建 Kubernetes 1.14 版本峰伙,過程中涉及各種組件的安裝配置,所以打算通過腳本自動(dòng)化的部署配置這些組件程帕,本文主要描述在 CentOS 7上通過腳本自動(dòng)化配置服務(wù)器間的免密登錄住练,本來是打算前幾天寫完的,但是沒有時(shí)間愁拭,所以今天才完成讲逛。
自動(dòng)化腳本導(dǎo)航
環(huán)境搭建-CentOS 7上通過腳本自動(dòng)化部署JDK 8
環(huán)境搭建-CentOS 7上通過Shell腳本自動(dòng)化修改機(jī)器名并配置靜態(tài)IP
環(huán)境搭建-CentOS 7上通過Shell腳本自動(dòng)化配置免密登錄
環(huán)境搭建-CentOS 7上通過Shell腳本自動(dòng)化安裝Harbor
自動(dòng)化腳本
??配置免密登錄的過程在這里就不在列出了,具體可參看筆者的這篇文章-環(huán)境搭建-CentOS服務(wù)器之間設(shè)置免密碼登錄岭埠,自動(dòng)化腳本分兩部分盏混,第一部分是生成公鑰,因?yàn)橛薪换ゲ僮飨郏@里使用 expect 腳本實(shí)現(xiàn):
#!/usr/bin/expect
spawn ssh-keygen -t rsa
expect "Enter file in which to save the key (/root/.ssh/id_rsa):"
send "\r"
expect "Enter passphrase (empty for no passphrase):"
send "\r"
expect "Enter same passphrase again:"
send "\r"
expect eof
調(diào)用上面 expect 腳本的 Shell 腳本许赃,這個(gè)腳本需要在所有機(jī)器上運(yùn)行:
sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/g" /etc/ssh/sshd_config
service sshd restart
# expect 腳本的全路徑,一定要全路徑
/home/shell_scripts/generate_keygen.exp
以上腳本運(yùn)行完畢之后馆类,就可以將免密登錄的公鑰拷貝到對(duì)應(yīng)的機(jī)器上混聊,這里也會(huì)涉及輸入密碼的交互操作,也需要使用 expect 腳本:
#!/usr/bin/expect
set usr [lindex $argv 0]
set node [lindex $argv 1]
puts "===========當(dāng)前用戶:${usr} 當(dāng)前節(jié)點(diǎn):${node}============="
spawn scp /$usr/.ssh/id_rsa.pub $usr@$node:/$usr/.ssh/node1.pub
expect "(yes/no)?"
send "yes\r"
expect "password:"
#密碼需要填寫正確
send "xxxx\r"
expect eof
spawn ssh -Tq $usr@$node "cat /$usr/.ssh/node1.pub >> /$usr/.ssh/authorized_keys"
expect "password:"
send "xxxx\r"
expect eof
調(diào)用以上 expect 腳本的 Shell 腳本如下:
#主機(jī)名包括 worker 的主機(jī)名并且打印出第二個(gè)域名的文字信息
hosts=($(cat /etc/hosts | grep worker | awk '{print $2}'))
for curnode in ${hosts[@]}
do
/home/shell_scripts/scp_public_key.exp "$(whoami)" "$curnode"
done
以上就是自動(dòng)化免密登錄的 Shell 腳本乾巧。