ssh配置免密登陸手動版和腳本版

在實際開發過程當中,若是集羣數量過多,集羣建傳輸要頻繁輸入密碼就會很麻煩,因此咱們通常都會給集羣配置免密登陸,下面以一臺機器爲例,給你們分享一下手動配置免密登陸和腳本一件配置免密登陸的方法node

環境準備

添加集羣ip映射

集羣的機器都要配置
vim /etc/hosts

clipboard.png

手動配置免密登陸

生成ssh免登錄密鑰

在各個節點分別執行
cd ~/.ssh  #進入到個人home目錄
若是是新建立的服務器或者是虛擬機可能會報錯
**[root@node2 ~]# cd ~/.ssh
-bash: cd: /root/.ssh: No such file or directory**
解決方法見另外一篇文章( https://segmentfault.com/a/1190000019919016?share_user=1030000019541827)
而後執行生成密鑰命令
ssh-keygen -t rsa (四個回車)
執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

clipboard.png

將公鑰拷貝到要免登錄的機器上
分別在node1,node2, node3執行
ssh-copy-id -i ~/.ssh/id_rsa.pub node1

clipboard.png

在node1上執行
ssh-copy-id -i ~/.ssh/id_rsa.pub node1
ssh-copy-id -i ~/.ssh/id_rsa.pub node2
ssh-copy-id -i ~/.ssh/id_rsa.pub node3
從而讓各個節點互相擁有其餘節點的祕鑰(流程與上圖相同,就再也不截圖)

驗證

在node1執行命令ssh node2 是否直接登陸:
需互相驗證
node1->node1
node1->node2
node2->node1
node2->node2
node1->node3
node3->node3
node3->node1
node2->node3
node3->node2
驗證經過例子以下圖所示,就不一一驗證全部的狀況了

clipboard.png

腳本配置免密登陸

sshFreeLogin.sh腳本代碼
#! /bin/bash
function sshFreeLogin()
{
 #1.檢測expect服務是否存在,不存在則使用yum安裝expect
 expectIsExists=`rpm -qa | grep expect` 
 if [ -z $expectIsExists ]
 then
      yum -y install expect
 fi
 #2.密鑰對不存在則建立密鑰
 [ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
 while read line;do
       #提取文件中的ip
       hostname=`echo $line | cut -d " " -f2`
       #提取文件中的用戶名
       user_name=`echo $line | cut -d " " -f3`
       #提取文件中的密碼
       pass_word=`echo $line | cut -d " " -f4`          
       expect <<EOF
              #複製公鑰到目標主機
              spawn ssh-copy-id $hostname
              expect {
                      #expect實現自動輸入密碼
                      "yes/no" { send "yes\n";exp_continue } 
                      "password" { send "$pass_word\n";exp_continue }
                      eof
              }
EOF
 # 讀取存儲ip的文件,host_ip文件所在的目錄地址
 done < /home/hadoop/automaticDeploy/host_ip.txt
}
sshFreeLogin
host_ip.txt配置
192.168.31.35 node1 root 123456
192.168.31.36 node2 root 123456
192.168.31.37 node3 root 123456

分別對應 ip 主機名 用戶名 密碼
腳本配置完成後,直接執行便可,腳本能夠隨意增長集羣機器數量,可是暫時只能執行腳本的集羣能夠免密登陸其餘全部機器vim

相關文章
相關標籤/搜索