VMware搭建Linux Ubuntu(22.04)环境(服务器集群),实现节点之间互相免密钥登录(以两个节点为例)

操作环境:

Linux:  Ubuntu22.04.02LTS

虚拟化软件:  VMware Workstation Pro17

远程连接软件:  MobaXterm 23.2

Step 1:实现MobaXterm远程访问各个节点

注: 此步骤非必须实现, 但实际搭建场景下通常会使用某种远程连接软件实现一个命令多个节点运行的操作, 而非一个个节点手动重复执行相同指令

下载软件: MobaXterm      自行STFW(search the fucking web)(上网搜索)

安装步骤一路下一步(记得安装在D盘)

安装完之后的界面如下图:

①点击窗口左上角session选项卡

②如图点击以ssh秘钥方式创建连接

如上图框1处输入所要连接节点的ip地址, 需要到下图所示设置部分点击箭头所指按钮

框2处的输入为远程连接的备注名(例如你QQ微信给你好友的备注名)

点击上图按钮后弹出下图对话框, 图中框选部分的 数字.数字.数字.数字 部分即为该机ip地址

然后你兴高采烈地照着ip输入到框中, 点击了ok进行连接, 但是MobaXterm弹出了①Connection refused或者②Connection time out,

问题①

出错的原因是: 你的ubuntu并没有安装openssh-server

于是你需要ctrl+alt+T快捷键打开终端, 在神秘的shell中输入如下指令安装openssh-server:

sudo apt-get install openssh-server 

上述没有问题安装好之后, 重启一下相关服务: systemctl restart sshd

问题②

Step 1:

鼠标右键点击-->打开“网络和Internet”设置

Step 2:修改VMware8 ipv4属性

最后再到mobaxterm中 按R键重新连接(Press R to restart session)

login as处输入你要连接节点的用户名

然后输入用户登录密码, 最终显示以下内容即为连接成功

至此为止, 你成功实现了一个节点的远程连接, 接下来你可以如法炮制, 连接若干个节点(具体取决于你需要搭建多少个节点的服务器集群)

Step 2: 实现节点ssh免密钥登录

①生成SSH密钥和公钥: ssh-keygen -t rsa

命令成功执行会显示如下内容(或者一直回车,相当于不设置密码):

若已经生成过ssh秘钥, 则会显示:

至此ssh秘钥已创建完毕.

②将ssh公钥发送(上传)到相应的节点(相当于把你这个节点的控制密码发送给另一个节点):

ssh-copy-id 192.168.xxx.xxx (ssh-copy-id为命令, 后面空格, 参数为你所要发送秘钥节点的ip地址或者别名(如果你改了hosts文件中ip地址映射的话))

ssh-copy-id localhost 将公钥发送给本机

可能遇到的问题:

root@localhost's password:
Permission denied, please try again.

解决方案:

1.在终端中输入,sudo passwd root 修改root密码

2.然后重启ssh服务, sudo service ssh restart

3.重启报错的虚拟机,sudo reboot, 然后再次输入ssh-copy-id 命令尝试即可

③修改/etc/ssh/sshd_config文件

使用sudo vim /etc/ssh/sshd_configsudo gedit /etc/ssh/sshd_config

将下图中第33行(各自的可能有出入)的 PermitRoorLogin 后的内容改为 yes

④使用ssh命令远程登录某个节点:

ssh ip地址 或 ssh 别名 (具体看⑤)(ip地址输入自己所要连接的ip地址, 这里的ip地址是我某个节点的ip地址)

例: ssh 192.168.140.48 或 ssh node1

步骤②不太严谨的通俗理解: 例如你在节点1上 创建了ssh秘钥和公钥, 并将公钥发送给了节点2, 那么节点2就可以直接访问节点1, 实现了 节点2对节点1的免密钥登录. 于是, 要实现互通免密钥登录, 你还需要在节点2上创建ssh秘钥与公钥, 并将ssh公钥发送给节点1. 至此, 你完成了节点1与节点2的互通免密钥登录. 上述操作都和一样前面, 如法炮制即可. 

⑤(非必要步骤)修改/etc/hosts文件 添加 ip地址与别名的映射

sudo vim /etc/hosts  (不会用vim编辑的话建议用gedit编辑, 操作和windows上的txt文本文档类似)

或 sudo gedit /etc/hosts

然后如图所示:

如图框选部分为添加内容

ip地址 别名

然后你再使用sshssh-copy-id 命令时就可以不用输很长的ip地址, 可以直接使用别名.

例: 上图中 ssh 192.168.xxx.131 等价于 ssh node1

Step 3: 灵活运用MobaXterm的MutilExecute功能

如图我已经连接了两个节点, 但是分别在两个节点上创建ssh秘钥, 发送公钥, 改配置文件就已经把相同的操作重复了一遍了, 如果还要3个,4个,5个甚至更多的节点, 那岂不是要累死. 由于这里用的远程连接软件为MobaXterm, 所以我们点击它的MutilExec, 就可以实现一个指令, 多端运行.

点击mutilexec后如图所示

然后你输入的命令都会在mutilexec的所有端执行, 如果不想某端执行的话, 可以看到每个窗口左下处都有一个 Exclude勾选, 选中即可让该端不同步输入命令.

剩下的内容, 自己多多尝试一下吧.

过程中有任何问题可以在评论区提出,截止本学期结束前应该看到就会回答的.(会科学上网的同学可以STFW, stackoverflow或askubuntu等网站都有很好的解答)

题外话:

南京大学计算机系统基础课程实验

个人极力推荐想进一步学习或探索操作系统的同学可以去做一下这个实验

传送门: nju-projectn.github.io/ics-pa-gitbook/

为什么要学习计算机系统基础

推荐计算机专业学生阅读(尤其是软硬件都有涉及的计算机专业或以后想从事计算机相关方向的学生):

为什么要学习计算机系统基础 · GitBook (nju-projectn.github.io)

什么是STFW, 为什么要STFW

此外还有 RTFM 和 RTFSC, 感兴趣的朋友可以自行探索nju-pa.

当前计算机专业学习英语的重要性:

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值