CentOS8虚拟机之间的通信

虚拟机之间的通信

  • ssh认证
  • 免密登录
  • 通过主机名实现ssh连接
  • 更加简单的同步 rsync 与其二次封装的 xsync

学习大数据,配置集群时,需要先让虚拟机之间能够自由通信。
看这篇文章前,必须确保各虚拟机的IP在同一网段。参考 Linux虚拟机安装及静态IP配置

下图是我自己安装了4台 centos8 虚拟机,并配置了静态IP:192,168.1.31192,168.1.32192,168.1.33192,168.1.34 。它们对应的主机名分别是flink01、flink02、flink03、flink04.

image.png

后边讲解下我是如何让这4台虚拟机免密连接的。不过文章截图都是我配置好后的截图,与配置过程可能有差异。

ssh认证

SSH 是较可靠,专为 远程登录 会话和其他网络服务提供安全性的协议。

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

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

2、测试 192,168.1.31192,168.1.32 是否能够通信:[root@flink01 ~]# ssh 192,168.1.32。没配置免密登录前,是需要输入密码。

3、分别在各台虚拟机上生成密钥对:例如 flink01虚拟机,[root@flink01 ~]# ssh-keygen -t rsa。此时 ~/ 下会生成一个 .ssh 文件夹(开始时没有,如果有可能是其他ssh自动生成的),该文件夹内有2个文件id_rsaid_rsa.pub,其中 id_rsa.pub 里边放着本机的公钥。

image.png

4、从上图中可以看到还有两个文件,其中 authorized_keys 是我自己创建的,写入所有虚拟机的公钥。则该电脑则可以免密登录所有虚拟机了。现在可以再次试一下[root@flink01 ~]# ssh 192,168.1.32

第一次应该不能识别 192,168.1.32 ,让输入密码。输入密码成功后系统背后会自动生成 ~/.ssh/known_hosts (有则不生成) ,并将 192,168.1.32 的认证数据写入到该文件。然后下次 [root@flink01 ~]# ssh 192,168.1.32 就不会能识别不用输入密码了。

image.png

我感觉将内容全部复制,粘贴到一个文件就挺方便的。不过这里还是介绍下 scpcat两个命令,可以更优雅的实现上边的配置。

scp 可传输文件或整个文件夹到另一台设备上。这里是传输的是一个文件,如果另一台设备上有该文件则被替换
[root@flink01 ~]# scp ~/.ssh/authorized_keys root@192.168.1.32:~/

cat 一般用于读取某个文件的内容。这里是将第一个文件内容追加到第二个文件内,如果第二个文件没有,则会创建然后追加(相当于复制)
[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 访问其他虚拟机时,免密认证前的识别,通过密码登录另一台电脑时,将会自动写入另一台电脑的相关信息。

[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

当然也可以手动更改配置的,我的如下:

image.png

各虚拟机的 ~/.ssh/known_hosts 也保持一致。可以粗暴的复制粘贴,也可以使用 scpcat 命令

6、上图中我还将各虚拟机的主机名追加在了对应位置:flink01,192.168.1.31 ecaddsa-sha2... 是希望虚拟机之间可以通过虚拟机的主机名就能访问。

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

image.png

8、可以试下:[root@flink01 ~]# ssh flink02 。可以发现现在不需要记住各虚拟机的IP,就能通信了。后边配置集群,设置host时,也可以直接使用主机名了。

9、如果是普通用户,步骤同上,不过要设置文件读取权限。

chmod 600 ~/.ssh/authorized_keys

是不是很开心的解决了 CentOS8虚拟机之间的通信 呢?欢迎大家评论。如果觉得好,就来个赞吧。

更加简单的同步 rsync 与其二次封装的 xsync

相对spc,用rsync做文件的复制的速度更快。rsync只对有差异文件做更新,而scp是把所有文件都复制过去。

安装:

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

二次封装rsync的 xsync

  • 查看全局环境变量的所有路径,在其中一个路径下创建脚本文件
[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,输入如下内容
#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in flink01 flink02 flink03
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送

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

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done
  • 放开 /root/bin/xsync 权限:
[root@flink01 bin]# chmod +x xsync
  • 在任意路径下使用 xsync,看是否能将文件同步到其他主机。例如同步 /root/bin/xsync ,让其他主机也有同步功能:
[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,发现 flink02 中已经有该文件了。同样放开该文件权限即可使用了 _
[root@flink02 bin]# chmod +x xsync
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容