批量部署免密登入及批量修改主機名ssh

2021-08-26 14:53:18 字數 1733 閱讀 1964

注):主機需安裝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:埠)

[email protected]:22

[email protected]:22

…… //中心主機傳輸並執行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...