CentOS8虛擬機(jī)之間的通信

虛擬機(jī)之間的通信

  • ssh認(rèn)證
  • 免密登錄
  • 通過(guò)主機(jī)名實(shí)現(xiàn)ssh連接
  • 更加簡(jiǎn)單的同步 rsync 與其二次封裝的 xsync

學(xué)習(xí)大數(shù)據(jù),配置集群時(shí),需要先讓虛擬機(jī)之間能夠自由通信。
看這篇文章前,必須確保各虛擬機(jī)的IP在同一網(wǎng)段。參考 Linux虛擬機(jī)安裝及靜態(tài)IP配置

下圖是我自己安裝了4臺(tái) centos8 虛擬機(jī),并配置了靜態(tài)IP:192,168.1.31、192,168.1.32192,168.1.33、192,168.1.34 。它們對(duì)應(yīng)的主機(jī)名分別是flink01、flink02、flink03、flink04.

image.png

后邊講解下我是如何讓這4臺(tái)虛擬機(jī)免密連接的。不過(guò)文章截圖都是我配置好后的截圖,與配置過(guò)程可能有差異。

ssh認(rèn)證

SSH 是較可靠,專為 遠(yuǎn)程登錄 會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。

1、修改配置文件 /etc/ssh/sshd_config

RSAAuthentication yes # 啟用 RSA 認(rèn)證
PubkeyAuthentication yes # 啟用公鑰私鑰配對(duì)認(rèn)證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑

2、測(cè)試 192,168.1.31、192,168.1.32 是否能夠通信:[root@flink01 ~]# ssh 192,168.1.32。沒(méi)配置免密登錄前,是需要輸入密碼。

3、分別在各臺(tái)虛擬機(jī)上生成密鑰對(duì):例如 flink01虛擬機(jī),[root@flink01 ~]# ssh-keygen -t rsa。此時(shí) ~/ 下會(huì)生成一個(gè) .ssh 文件夾(開(kāi)始時(shí)沒(méi)有,如果有可能是其他ssh自動(dòng)生成的),該文件夾內(nèi)有2個(gè)文件id_rsa、id_rsa.pub,其中 id_rsa.pub 里邊放著本機(jī)的公鑰。

image.png

4、從上圖中可以看到還有兩個(gè)文件,其中 authorized_keys 是我自己創(chuàng)建的,寫(xiě)入所有虛擬機(jī)的公鑰。則該電腦則可以免密登錄所有虛擬機(jī)了。現(xiàn)在可以再次試一下[root@flink01 ~]# ssh 192,168.1.32。

第一次應(yīng)該不能識(shí)別 192,168.1.32 ,讓輸入密碼。輸入密碼成功后系統(tǒng)背后會(huì)自動(dòng)生成 ~/.ssh/known_hosts (有則不生成) ,并將 192,168.1.32 的認(rèn)證數(shù)據(jù)寫(xiě)入到該文件。然后下次 [root@flink01 ~]# ssh 192,168.1.32 就不會(huì)能識(shí)別不用輸入密碼了。

image.png

我感覺(jué)將內(nèi)容全部復(fù)制,粘貼到一個(gè)文件就挺方便的。不過(guò)這里還是介紹下 scpcat兩個(gè)命令,可以更優(yōu)雅的實(shí)現(xiàn)上邊的配置。

scp 可傳輸文件或整個(gè)文件夾到另一臺(tái)設(shè)備上。這里是傳輸?shù)氖且粋€(gè)文件,如果另一臺(tái)設(shè)備上有該文件則被替換
[root@flink01 ~]# scp ~/.ssh/authorized_keys root@192.168.1.32:~/

cat 一般用于讀取某個(gè)文件的內(nèi)容。這里是將第一個(gè)文件內(nèi)容追加到第二個(gè)文件內(nèi),如果第二個(gè)文件沒(méi)有,則會(huì)創(chuàng)建然后追加(相當(dāng)于復(fù)制)
[root@flink02 ~]# cat ~/authorized_keys >> ~/.ssh/authorized_keys
[root@flink02 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@flink02 ~]# cat ~/.ssh/authorized_keys

刪除 192.168.1.32:~/authorized_keys
[root@flink02 ~]# rm -rf ~/authorized_keys

5、上邊提到 ~/.ssh/known_hosts 是在 ssh 訪問(wèn)其他虛擬機(jī)時(shí),免密認(rèn)證前的識(shí)別,通過(guò)密碼登錄另一臺(tái)電腦時(shí),將會(huì)自動(dòng)寫(xiě)入另一臺(tái)電腦的相關(guān)信息。

[root@flink01 ~]# ssh 192,168.1.31
// 自己
[root@flink01 ~]# ssh 192,168.1.32
// 輸入密碼
[root@flink01 ~]# ssh 192,168.1.33
// 輸入密碼
[root@flink01 ~]# ssh 192,168.1.34

當(dāng)然也可以手動(dòng)更改配置的,我的如下:

image.png

各虛擬機(jī)的 ~/.ssh/known_hosts 也保持一致??梢源直┑膹?fù)制粘貼,也可以使用 scp、cat 命令

6、上圖中我還將各虛擬機(jī)的主機(jī)名追加在了對(duì)應(yīng)位置:flink01,192.168.1.31 ecaddsa-sha2... 是希望虛擬機(jī)之間可以通過(guò)虛擬機(jī)的主機(jī)名就能訪問(wèn)。

7、配置 [root@flink01 ~]# vim /etc/hosts

image.png

8、可以試下:[root@flink01 ~]# ssh flink02 ??梢园l(fā)現(xiàn)現(xiàn)在不需要記住各虛擬機(jī)的IP,就能通信了。后邊配置集群,設(shè)置host時(shí),也可以直接使用主機(jī)名了。

9、如果是普通用戶,步驟同上,不過(guò)要設(shè)置文件讀取權(quán)限。

chmod 600 ~/.ssh/authorized_keys

是不是很開(kāi)心的解決了 CentOS8虛擬機(jī)之間的通信 呢?歡迎大家評(píng)論。如果覺(jué)得好,就來(lái)個(gè)贊吧。

更加簡(jiǎn)單的同步 rsync 與其二次封裝的 xsync

相對(duì)spc,用rsync做文件的復(fù)制的速度更快。rsync只對(duì)有差異文件做更新,而scp是把所有文件都復(fù)制過(guò)去。

安裝:

[root@flink01 ~]# yum install -y rsync

二次封裝rsync的 xsync

  • 查看全局環(huán)境變量的所有路徑,在其中一個(gè)路徑下創(chuàng)建腳本文件
[root@flink01 ~]# echo $PATH
/opt/jdk1.8.0_291/bin:/opt/hadoop-3.3.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@flink01 ~]# vim /root/bin/xsync
  • 編輯 /root/bin/xsync,輸入如下內(nèi)容
#1. 判斷參數(shù)個(gè)數(shù)
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍歷集群所有機(jī)器
for host in flink01 flink02 flink03
do
    echo ====================  $host  ====================
    #3. 遍歷所有目錄,挨個(gè)發(fā)送

    for file in $@
    do
        #4. 判斷文件是否存在
        if [ -e $file ]
            then
                #5. 獲取父目錄
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 獲取當(dāng)前文件的名稱
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done
  • 放開(kāi) /root/bin/xsync 權(quán)限:
[root@flink01 bin]# chmod +x xsync
  • 在任意路徑下使用 xsync,看是否能將文件同步到其他主機(jī)。例如同步 /root/bin/xsync ,讓其他主機(jī)也有同步功能:
[root@flink01 bin]# xsync ~/bin/xsync
==================== flink01 ====================
sending incremental file list

sent 44 bytes  received 12 bytes  112.00 bytes/sec
total size is 733  speedup is 13.09
==================== flink02 ====================
sending incremental file list
xsync

sent 824 bytes  received 35 bytes  572.67 bytes/sec
total size is 733  speedup is 0.85
==================== flink03 ====================
sending incremental file list
xsync

sent 824 bytes  received 35 bytes  1,718.00 bytes/sec
total size is 733  speedup is 0.85

  • 連接 flink02,發(fā)現(xiàn) flink02 中已經(jīng)有該文件了。同樣放開(kāi)該文件權(quán)限即可使用了 _
[root@flink02 bin]# chmod +x xsync
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容