Ubuntu部署集群环境(3台)

第1章 免密登录

1.1 单台机器实现免密登录

  1. 首先查看是否安装 openssh-server ,若未安装 openssh-server,则需要先安装 openssh-server。具体操作如下所示。

    • 先检查是否安装了 openssh-server,使用如下命令进行检测。

      bash 复制代码
      leolei@leifenglin:~$ sudo apt search openssh-server
      [sudo] password for leolei:
      Sorting... Done
      Full Text Search... Done
      openssh-server/bionic-updates,now 1:7.6p1-4ubuntu0.7 amd64 [installed]
        secure shell (SSH) server, for secure access from remote machines

      若屏幕输出上述类似信息则证明本 Ubuntu 系统已经安装了 openssh-server,不需要再额外安装 openssh-server,可以直接进行第二部操作。

    • 若未安装 openssh-server,则使用如下命令安装 openssh-server。

    bash 复制代码
    sudo apt install openssh-server
  2. 首先进入当前用户的目录下,然后在该用户的目录下创建一个文件 .ssh ,然后进入该目录下生成本机公钥,具体操作如下所示。

bash 复制代码
cd ~
mkdir .ssh
cd ~/.ssh/
ssh-keygen -t rsa

若屏幕输出以下信息,则证明本机公钥已经生成完成。

bash 复制代码
leolei@leifenglin:~/.ssh$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/leolei/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/leolei/.ssh/id_rsa.
Your public key has been saved in /home/leolei/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:rUPN8Daw4VxEzef3e7sBt7jjPLTfEPVcVC6sDDfbbvQ leolei@leifenglin
The key's randomart image is:
+---[RSA 2048]----+
|         .oo    +|
|         .  o..o |
|        + o ooo +|
|       o @ + =.++|
|        S B +.+o+|
|       . o . ++oo|
|        o   ..=oE|
|         .  .=.o+|
|            .+++=|
+----[SHA256]-----+

为确保公钥已经生成成功,可以检测 目录 ~/.ssh 下是否有文件 ~/.ssh/id_rsa.pub 和 ~/.ssh/id_rsa。若有,则证明公钥生成完成。

bash 复制代码
leolei@leifenglin:~/.ssh$ ll
total 16
drwx------ 2 leolei leolei 4096 Oct 24 13:22 ./
drwxr-xr-x 7 leolei leolei 4096 Oct 24 13:09 ../
-rw------- 1 leolei leolei 1679 Oct 24 13:22 id_rsa
-rw-r--r-- 1 leolei leolei  399 Oct 24 13:22 id_rsa.pub

用户公钥位置:"~/.ssh/id_rsa.pub",用户私钥位置:"/.ssh/id_rsa"。

  1. 将本机公钥发送给本机需要免密ssh访问的节点(基本机)

    bash 复制代码
    leolei@leifenglin:~/.ssh$ cat id_rsa.pub >>authorized_keys
    leolei@leifenglin:~/.ssh$ ll
    total 20
    drwx------ 2 leolei leolei 4096 Oct 24 13:29 ./
    drwxr-xr-x 7 leolei leolei 4096 Oct 24 13:09 ../
    -rw-rw-r-- 1 leolei leolei  399 Oct 24 13:29 authorized_keys
    -rw------- 1 leolei leolei 1679 Oct 24 13:22 id_rsa
    -rw-r--r-- 1 leolei leolei  399 Oct 24 13:22 id_rsa.pub

    将用户公钥追加到了文件 authorized_keys 中后,可通过命令cat authorized_keys查看内容。

  2. 修改授权文件及其所在文件夹的权限

    bash 复制代码
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 -R ~/.ssh

    修改文件或目录后,输入查询命令查看文件或目录的权限是否修改成功,具体操作如下所示。

    bash 复制代码
    leolei@leifenglin:~/.ssh$ ll
    total 24
    drwx------ 2 leolei leolei 4096 Oct 24 13:39 ./
    drwxr-xr-x 7 leolei leolei 4096 Oct 24 13:43 ../
    -rwx------ 1 leolei leolei  399 Oct 24 13:29 authorized_keys*
    -rwx------ 1 leolei leolei 1679 Oct 24 13:22 id_rsa*
    -rwx------ 1 leolei leolei  399 Oct 24 13:22 id_rsa.pub*

    若在屏幕查看到如上信息则证明文件或目录权限修改成功。

  3. 验证本机免密登录是否配置成功

    执行以下命令,若未输入密码登陆成功,则代表配置成功。

    bash 复制代码
    leolei@leifenglin:~/.ssh$ ssh localhost
    The authenticity of host 'localhost (127.0.0.1)' can't be established.
    ECDSA key fingerprint is SHA256:zqE9cfcuHC4WNoH1iAg3GjYJ2l96cKgr2x7pWiWMMpQ.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
    Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-213-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/pro
    
      System information as of Fri Oct 24 13:39:21 UTC 2025
    
      System load:  0.08               Processes:             103
      Usage of /:   12.1% of 48.42GB   Users logged in:       1
      Memory usage: 11%                IP address for enp0s3: 10.0.2.15
      Swap usage:   0%
    
     * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
       just raised the bar for easy, resilient and secure K8s cluster deployment.
    
       https://ubuntu.com/engage/secure-kubernetes-at-the-edge
    
    Expanded Security Maintenance for Infrastructure is not enabled.
    
    0 updates can be applied immediately.
    
    170 additional security updates can be applied with ESM Infra.
    Learn more about enabling ESM Infra service for Ubuntu 18.04 at
    https://ubuntu.com/18-04
    
    New release '20.04.6 LTS' available.
    Run 'do-release-upgrade' to upgrade to it.

    若输入上述命令后,第一次需要输入一个 yes 才能本机登录,第二次则可以直接登录。若想退出 localhost 登录,可以使用命令exit,若屏幕输出如下信息则证明成功退出 localhost 登录。

    bash 复制代码
    Last login: Fri Oct 24 13:43:40 2025 from 10.0.2.2
    leolei@leifenglin:~$ exit
    logout
    Connection to localhost closed.
    leolei@leifenglin:~/.ssh$

1.2 多台机器实现免密登录

重新创建两台虚拟机,本文推荐使用 VirtualBox 软件的复制功能创建虚拟机,然后修改主机名和 IP 地址,使三台虚拟机的 IP 地址各不相同,然后将三台虚拟机添加到同一个 NAT 网络当中。

  1. 修改主机名,完全复制虚拟机后,它们的 IP 地址和主机名完全相同,所以需要修改主机名和 IP 地址,这里先修改主机名,具体操作如下所示。分别将新建的虚拟机的主机名修改为 leifenglin1 和 leifenglin2。具体命令如下所示。

    bash 复制代码
    sudo hostnamectl hostname leifenglin1
    sudo hostnamectl hostname leifenglin2

    具体修改主机名的方法可以参考网址:https://blog.csdn.net/2301_77987130/article/details/153523187?spm=1011.2415.3001.5331

  2. 修改机器上的/etc/hosts文件,添加主机名"leifenglin1"【和leifenglin2】登录和他对应的IP地址之间的映射,使得每台机器都可以通过主机名登陆其他机器。具体操作如下:

    • 查看两台机器的ip地址,发现两台虚拟机的 IP 地址都是相同的,都是 10.0.2.15,这里我们需要修改 IP 地址。修改 IP 地址的方法请参考网址https://blog.csdn.net/2301_77987130/article/details/153848774?spm=1011.2415.3001.5331

      bash 复制代码
       ip a

      本文的主机名及 IP 地址如下表格所示,阅读者可更具自己的情况进行静态 IP 地址的设置。

      主机名 IP 地址
      leifenglin 10.0.2.15
      leifenglin1 10.0.2.16
      leifenglin2 10.0.2.17

      静态 IP 地址修改完成后可再次通过命令ip a查看 3 台虚拟机的 IP 地址是否改变,查询到的结果如下所示。

    • 修改每台主机的hosts文件

    bash 复制代码
    sudo vim /etc/hosts

    修改后的文件如下所示。

    • 将每台主机的公钥发送给对方

      bash 复制代码
      #主机leifenglin发送给主机leifenglin1,及leifenglin2
      cat ~/.ssh/id_rsa.pub | ssh leolei@leifenglin1 'cat - >>~/.ssh/authorized_keys'
      cat ~/.ssh/id_rsa.pub | ssh leolei@leifenglin2 'cat - >>~/.ssh/authorized_keys'
      
      #主机leifenglin1发送给主机leifenglin,leifenglin2
      cat ~/.ssh/id_rsa.pub | ssh leolei@leifenglin 'cat - >>~/.ssh/authorized_keys'
      cat ~/.ssh/id_rsa.pub | ssh leolei@leifenglin2 'cat - >>~/.ssh/authorized_keys'
      
      #主机leifenglin2发送给主机leifenglin1,leifenglin
      cat ~/.ssh/id_rsa.pub | ssh leolei@leifenglin 'cat - >>~/.ssh/authorized_keys'
      cat ~/.ssh/id_rsa.pub | ssh leolei@leifenglin1 'cat - >>~/.ssh/authorized_keys'
    • 将主机leifenglin的授权文件发送到主机leifenglin机器上,覆盖原有文件。

      bash 复制代码
      scp ~/.ssh/authorized_keys leolei@leifenglin1:/home/leolei/.ssh/authorized_keys
      scp ~/.ssh/authorized_keys leolei@leifenglin2:/home/leolei/.ssh/authorized_keys
    • 验证三台主机是否可以彼此免密登录

      bash 复制代码
      ssh leolei@leifenglin1
      exit
      bash 复制代码
      ssh leolei@leifenglin
      exit

第2章 安装Java环境

本文的 JDK 的安装可以参考网址:https://blog.csdn.net/2301_77987130/article/details/153122819?spm=1011.2415.3001.5331

  1. 安装jdk

    bash 复制代码
    sudo apt install openjdk-8-jdk
  2. 配置环境变量

    • 查看一下 java 可执行程序
    bash 复制代码
    ls -l /bin/java
    • 继续再查看/etc/alternatives/java:
    bash 复制代码
    ls -l /etc/alternatives/java
    • 可以看到 /etc/alternatives/java 也是个符号链接,它指向了最终的实际文件夹:
    bash 复制代码
    ls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
    • OpenJDK 安装后,具体安装路径可以通过下面的命令查得:
    bash 复制代码
    readlink -f $(which java)
    • 根据以上信息,编辑 /etc/bash.bashrc 资源文件
    shell 复制代码
    export JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
  3. 最后的检查。 重新登录检查一下:

    bash 复制代码
    java -version

`

  • OpenJDK 安装后,具体安装路径可以通过下面的命令查得:
bash 复制代码
readlink -f $(which java)
  • 根据以上信息,编辑 /etc/bash.bashrc 资源文件
shell 复制代码
export JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
  1. 最后的检查。 重新登录检查一下:

    bash 复制代码
    java -version
相关推荐
小志biubiu5 小时前
linux_缓冲区及简单libc库【Ubuntu】
linux·运维·服务器·c语言·学习·ubuntu·c
weixin_454372116 小时前
0.机顶盒晶晨s905l3b芯片--刷入第三方系统+安卓9 root教程+armbian写入EMMC教程
linux·学习方法
溜追6 小时前
OEC-Turbo刷群晖&Armbian流程记录
linux·经验分享·嵌入式硬件
郝学胜-神的一滴8 小时前
Linux中的`fork`函数详解:深入解析
linux·服务器·开发语言·c++·算法
问道飞鱼9 小时前
【Linux知识】Linux文本操作相关命令行
linux·运维·服务器·文本处理·1024程序员节
Madison-No79 小时前
【Linux】自动化构建工具--make/Makefile
linux·运维·服务器
陌路2011 小时前
Linux16-进程间的通信--共享内存
linux
运维帮手大橙子11 小时前
Docker监控系统中添加NodeExporter
linux·运维
Lzc77411 小时前
Linux网络的应用层协议HTTP
linux·1024程序员节·应用层协议http