第1章 免密登录
1.1 单台机器实现免密登录
-
首先查看是否安装 openssh-server ,若未安装 openssh-server,则需要先安装 openssh-server。具体操作如下所示。
-
先检查是否安装了 openssh-server,使用如下命令进行检测。
bashleolei@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。
bashsudo apt install openssh-server -
-
首先进入当前用户的目录下,然后在该用户的目录下创建一个文件 .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"。
-
将本机公钥发送给本机需要免密ssh访问的节点(基本机)
bashleolei@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查看内容。 -
修改授权文件及其所在文件夹的权限
bashchmod 600 ~/.ssh/authorized_keys chmod 700 -R ~/.ssh修改文件或目录后,输入查询命令查看文件或目录的权限是否修改成功,具体操作如下所示。
bashleolei@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*若在屏幕查看到如上信息则证明文件或目录权限修改成功。
-
验证本机免密登录是否配置成功
执行以下命令,若未输入密码登陆成功,则代表配置成功。
bashleolei@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 登录。bashLast 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 网络当中。
-
修改主机名,完全复制虚拟机后,它们的 IP 地址和主机名完全相同,所以需要修改主机名和 IP 地址,这里先修改主机名,具体操作如下所示。分别将新建的虚拟机的主机名修改为 leifenglin1 和 leifenglin2。具体命令如下所示。
bashsudo hostnamectl hostname leifenglin1 sudo hostnamectl hostname leifenglin2具体修改主机名的方法可以参考网址:https://blog.csdn.net/2301_77987130/article/details/153523187?spm=1011.2415.3001.5331
-
修改机器上的/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
baship 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文件
bashsudo 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机器上,覆盖原有文件。
bashscp ~/.ssh/authorized_keys leolei@leifenglin1:/home/leolei/.ssh/authorized_keys scp ~/.ssh/authorized_keys leolei@leifenglin2:/home/leolei/.ssh/authorized_keys
-
验证三台主机是否可以彼此免密登录
bashssh leolei@leifenglin1 exit
bashssh leolei@leifenglin exit

-
第2章 安装Java环境
本文的 JDK 的安装可以参考网址:https://blog.csdn.net/2301_77987130/article/details/153122819?spm=1011.2415.3001.5331
-
安装jdk
bashsudo apt install openjdk-8-jdk -
配置环境变量
- 查看一下 java 可执行程序
bashls -l /bin/java- 继续再查看/etc/alternatives/java:
bashls -l /etc/alternatives/java- 可以看到 /etc/alternatives/java 也是个符号链接,它指向了最终的实际文件夹:
bashls -l /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java- OpenJDK 安装后,具体安装路径可以通过下面的命令查得:
bashreadlink -f $(which java)- 根据以上信息,编辑 /etc/bash.bashrc 资源文件
shellexport JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH -
最后的检查。 重新登录检查一下:
bashjava -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
-
最后的检查。 重新登录检查一下:
bashjava -version