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
相关推荐
188号安全攻城狮39 分钟前
【PWN】HappyNewYearCTF_8_ret2csu
linux·汇编·安全·网络安全·系统安全
上天_去_做颗惺星 EVE_BLUE1 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
Yana.nice2 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月2 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊2 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey3 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1153 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng3 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.3 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon3 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发