Linux 虛擬機器自動批量配置ssh免密登陸

2021-10-22 18:33:03 字數 2709 閱讀 3059

需要注意:各台機器需要安裝expect。

假如連線外網則可以使用yum安裝。

yum install expect.

假如沒有連線外網的條件,也可以使用rpm包進行安裝

指令碼編寫如下:

其中第乙個引數為要設定ssh的使用者名稱,這裡為spark

第二個引數為使用者對應的密碼

第三個引數為要設定互通ssh的機器的ip列表

vi autossh.sh

#!/bin/sh

dest_user=$1

password=$2

hosts_file=$3

if [ $# -ne 3 ]; then

echo "usage:"

echo "$0 remoteuser remotepassword hostsfile"

exit 1

fissh_dir=~/.ssh

script_prefix=./tmp

echo *************************==

# 1. prepare directory .ssh

mkdir $ssh_dir

chmod 700 $ssh_dir

# 2. generat ssh key

tmp_script=$script_prefix.sh

echo "#!/usr/bin/expect">$tmp_script

echo "spawn ssh-keygen -b 1024 -t rsa">>$tmp_script

echo "expect *key*">>$tmp_script

echo "send \r">>$tmp_script

if [ -f $ssh_dir/id_rsa ]; then

echo "expect *verwrite*">>$tmp_script

echo "send y\r">>$tmp_script

fiecho "expect *passphrase*">>$tmp_script

echo "send \r">>$tmp_script

echo "expect *again:">>$tmp_script

echo "send \r">>$tmp_script

echo "interact">>$tmp_script

chmod +x $tmp_script

/usr/bin/expect $tmp_script

rm $tmp_script

# 3. generat file authorized_keys

cat $ssh_dir/id_rsa.pub>>$ssh_dir/authorized_keys

# 4. chmod 600 for file authorized_keys

chmod 600 $ssh_dir/authorized_keys

echo *************************==

# 5. copy all files to other hosts

for ip in $(cat $hosts_file)

do if [ "x$ip" != "x" ]; then

echo -------------------------

tmp_script=$.$ip.sh

# check known_hosts

val=`ssh-keygen -f $ip`

if [ "x$val" == "x" ]; then

echo "$ip not in $ssh_dir/known_hosts, need to add"

val=`ssh-keyscan $ip 2>/dev/null`

if [ "x$val" == "x" ]; then

echo "ssh-keyscan $ip failed!"

else

echo $val>>$ssh_dir/known_hosts

fifi

echo "copy $ssh_dir to $ip"

echo "#!/usr/bin/expect">$tmp_script

echo "spawn scp -r $ssh_dir $dest_user@$ip:~/">>$tmp_script

echo "expect *assword*">>$tmp_script

echo "send $password\r">>$tmp_script

echo "interact">>$tmp_script

chmod +x $tmp_script

#echo "/usr/bin/expect $tmp_script" >$tmp_script.do

#sh $tmp_script.do&

/usr/bin/expect $tmp_script

rm $tmp_script

echo "copy done."

fidone

echo done.

指令碼執行方式./autossh.sh spark 123456 /etc/hosts.conf執行完成之後便可以幾台機器之間進行ssh免密登陸了

Linux虛擬機器的配置

虛擬機器相關配置 虛擬機器配置 2核cpu 2g記憶體 建立新的虛擬機器可以選擇 1.虛擬機器防火牆關閉 虛擬機器桌面 右鍵 open in teminal 命令如下 service iptables stop 2.ifconfig 當前虛擬機器ip cmd ipconfig 筆記本ip 膝上型電腦...

Linux 虛擬機器網路配置

這幾天被虛擬機器的網路配置搞得死去活來,將知識點總結下,以後參考。首先,你得了解什麼是虛擬網路,附上大佬的部落格 網路原理,以及對vmware workstation虛擬網路vmnet0 vmnet1 vmnet8的 環境 本機作業系統 win10 虛擬機器 fedora 21 了解什麼是 nat ...

虛擬機器Linux網路配置

linux系統配置ip 虛擬機器網絡卡介面卡為 橋接模式 linux伺服器網絡卡預設配置檔案在 etc sysconfig network scripts 下 這裡我的網絡卡名稱為ifcfg ens33 vi ifcfg ens33 開啟網絡卡配置檔案 說明 bootproto 用來設定網絡卡的啟動...