注):主機需安裝pssh、expect相關命令;
一、由中心主機生成公鑰並批量傳輸至各節點
中心主機以root執行ssh-keygen -t rsa
在/root/.ssh/下生成id_rsa(私鑰); id_rsa.pub(公鑰);
cat /root/.ssh/id_rsa.pub > /tmp/authorized_keys //備份並授權chmod 600
通過shell傳輸公鑰至各節點(scp.sh&info.txt):
//cat scp.sh (scp shell)
#!/bin/bash
if [ $#
-ne1 ] ;then
echo
"need server info file!"
exit1fi
while
read line
doarr=($)
ip=$
port=$
user=$
pass=$
path=$
expect -c "
spawn /usr/bin/scp -pp$port /tmp/authorized_keys $user@$ip:$path
expect \r\" }
}
\"*password:\"
\r\"}}
expect eof
"done
<$1
//cat info.txt (接收公鑰節點資訊;格式:ip,埠,使用者名稱,密碼,使用者家目錄/.ssh)
10.1.1.1,22,root,123456,/root/.ssh/
10.1.1.2,22,root,123456,/root/.ssh/
…… //批量傳輸公鑰 /bin/bash scp.sh info.txt
//驗證無密碼登入ssh -p22 [email protected]
*****===>>
二、批量修改主機名
// cat host.sh (修改主機名shell)
#!/bin/bash
ip=$(ifconfig eth0 |awk -f '[ :]+'
'nr==2 ')
hos_t=$(cat /tmp/host_ip.txt |awk -f ','
'/'$ip
'/')
sed -i "s#\(hostname=\).*#\1$#g" /etc/sysconfig/network
// cat host_ip.txt (主機名與ip資訊;格式:主機名,ip)
centos_001,10.1.1.1
centos_002,10.1.1.2
…… //cat pssh.txt (pssh遠端主機列表;格式:使用者名稱@ip:埠)
…… //中心主機傳輸並執行host.sh & host_ip.txt
//執行 pscp -h pssh.txt host.sh host_ip.txt /tmp/
//執行 pssh -h pssh.txt 「/bin/bash /tmp/host.sh」
驗證:略
^_^能力有限,歡迎指正~
2018-08-31
ssh免密批量部署
vim aa.sh bin bash yum y install expect if f root ssh id rsa f id rsa.pub then 判斷是否有公金鑰 continue else 否則生產公金鑰 usr bin expect eof spawn ssh keygen t rs...
ssh實現批量免密登入
使用場景 比如我們在使用ansible批量部署大量伺服器的時候,如果一台一台的伺服器去分發金鑰會很麻煩 所以用指令碼實現批量部署免密登入就很現實了。下面的 親測成功 但是有乙個缺點,缺點就是伺服器的密碼都是一致的,如果不是一致的,是不成功的。這裡用到了乙個軟體expect,expect是乙個自動化互...
Linux ssh下批量實現免密登入
1.儲存遠端主機ip位址的檔案 cloud nsd shell ip.txt 不用的ip位址需用 注釋 201.1.2.100 201.1.2.200 192.168.4.6 192.168.4.1 192.168.4.22.pssh.sh指令碼 bin bash author an version...