任务目的

  • 熟练安装 JDK
  • 重点掌握配置 SSH 免密登录的方法

任务清单

  • 任务1:安装 JDK
  • 任务2:配置 SSH 免密登录

任务步骤

任务1:安装JDK

1. 准备软件

  JDK 的安装包已经为大家准备好,在 /root/software 目录下,可以使用如下命令进行查看:

cd /root/software/    # 进入目录
ll # 罗列出当前文件或目录的详细信息,是ls -l的别名

2.1 Linux系统环境准备_java

图1

2. 解压压缩包

tar -zxvf jdk-8u221-linux-x64.tar.gz 
  • tar 命令:用于打包并压缩和解包并解压缩文件
  • 使用格式:
  • 打包并压缩:tar -zcvf 打包压缩名 文件名/目录
  • 解包并解压缩:tar -zxvf *.tar.gz格式的打包压缩文件
  • 常用选项:
  • z:gzip,通过 gzip 格式压缩或者解压缩
  • -C:指定需要解压的目录,若是未指定,则解压到当前目录
  • 解压成功,进行验证:

2.1 Linux系统环境准备_java_02

图2

3. 配置环境变量

  配置环境变量就是在整个运行环境都可以使用的变量,而路径添加到 PATH 类似于在 Windows 平台下将程序添加到注册表,添加某个路径到 PATH 环境变量后,执行该路径下的文件就不需要输入完整的命令路径而只需要输入命令的文件名。

  例如,JDK 的安装目录为 /root/software/jdk1.8.0_221,那么要查看 JDK 的版本,需要输入​​/root/software/jdk1.8.0_221/bin/java -version​​​,但是如果将 /root/software/jdk1.8.0_221/bin/ 配置到 PATH 下,就只需要直接输入​​java -version​​。

  所以如果我们需要经常运行的命令,比如之后经常用到的 ​​hadoop​​​、​​hdfs​​等,我们可以将他们的路径全都放在 PATH 里面,这样运行比较方便。

  Linux 环境变量和 Windows 的环境变量一样,分系统环境变量和用户环境变量,系统环境变量对所有用户有效,而用户环境变量只对当前用户有效。

  • 系统环境变量:对于添加给所有用户的环境变量,直接编辑: "/etc/bashrc"或者"/etc/profile";
  • 用户环境变量:对于添加给某一个用户的环境变量,可以编辑用户 /home 目录下的:" 用户名/.bashrc "或者"用户名/.bash_profile"。

  (1)在此处我们配置系统环境变量,使用命令:

vim /etc/profile

  (2)在最后加入以下两行内容:

export JAVA_HOME=/root/software/jdk1.8.0_221  # 配置Java的安装目录
export PATH=$PATH:$JAVA_HOME/bin # 在原PATH的基础上加入JDK的bin目录

  注意:

  • export 是把这三个变量导出为全局变量。
  • 大小写必须严格区分。

  如下图所示:

2.1 Linux系统环境准备_环境变量_03

图3

  添加完成,使用​​:wq​​保存退出。

  (3)让配置文件立即生效,使用如下命令:

source /etc/profile

  (4)检测 JDK 是否安装成功,使用命令查看 JDK 版本:

java -version

  执行此命令后,若是出现 JDK 版本信息说明配置成功:

2.1 Linux系统环境准备_java_04

图4

任务2:配置 SSH 免密登录

  通过前面的操作,已经完成了JDK的安装和基本配置,虽然这个节点已经可以正常使用了,但是依然存在下列问题。

  (1)实际工作中,服务器被放置在机房中,同时受到地域和管理的限制,开发人员通常不会进入机房直接上机操作,而是通过远程连接服务器进行相关操作。
  (2)在集群开发中,主节点通常会对集群中各个节点频繁地访问,就需要不断输入目标服务器的用户名和密码,这种操作方式非常麻烦并且还会影响集群服务的连续运行。

  为了解决上述问题,可以通过配置 SSH 服务来分别实现远程登录和 SSH 免密登录功能。

1. SSH 概念

  SSH 为 Secure Shell(安全外壳协议) 的缩写。
  SSH 是一种网络协议,用于计算机之间的加密登录。很多 ftp、 pop 和 telnet 在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。
  SSH就是专为远程登录会话和其他网络服务提供安全性的协议。

2. SSH 组成

  SSH 是由客户端和服务端的软件组成的。
  服务端是一个守护进程(sshd),他在后台运行并响应来自客户端的连接请求。
  客户端包含 ssh 程序以及像 scp(远程拷贝)、 slogin(远程登陆)、 sftp(安全文件传输)等其他的应用程序。

3. SSH 实现过程

  具体原理流程如下图所示:

2.1 Linux系统环境准备_java_05

图5

4. SSH 实现步骤

  因为我们搭建的是伪分布式集群,所以只准备一台节点,我们可以将此节点即作为服务器端,也作为客户机端,实现自己免密登录自己。

  要想实现此功能,首先需要在此节点上生成root用户的公钥,然后将生成的公钥文件复制到公钥库文件authorized_keys中,然后将公钥库文件authorized_keys放置到/root/.ssh目录下,这样以后每次使用root登录本机的时候,就不需要输入密码了。具体操作如下:

  (1)下载 SSH 服务并启动

  SSH 服务(openssh-server和openssh-clients)已经为大家下载好,所以此处直接启动即可:

/usr/sbin/sshd

22(SSH的默认端口)端口号,可以使用以下命令进行查看:

netstat -tnulp

22

2.1 Linux系统环境准备_解压缩_06

图6

  只要将 SSH 服务启动成功,我们就可以进行远程连接访问了。开发人员比较常用的远程连接工具有 Xshell、SecureCRT 等。接下来我们继续配置SSH免密钥登录。

  (2)首先生成密钥对,使用命令:

ssh-keygen
## 或者

  语法解析:

  • ​ssh-keygen​​:生成、管理和转换认证密钥。
  • ​-t​​:指定密钥类型,包括RSA和DSA两种密钥,默认RSA。

  上面一种是简写形式,提示要输入信息时不需要输入任何东西,直接回车三次即可

2.1 Linux系统环境准备_java_07

图7

  从打印信息中可以看出,私钥 id_rsa 和公钥 id_rsa.pub 都已创建成功,并放在 /root/.ssh 目录中:

2.1 Linux系统环境准备_解压缩_08

图8

 

  (3)将公钥放置到授权列表文件 authorized_keys 中,使用命令:

cp id_rsa.pub authorized_keys

  验证:

2.1 Linux系统环境准备_解压缩_09

图9

 

  (4)修改授权列表文件 authorized_keys 的权限,使用命令:

chmod 600 authorized_keys

  设置拥有者可读可写,其他人无任何权限(不可读、不可写、不可执行)。

2.1 Linux系统环境准备_java_10

图10

  (5)验证免密登录是否配置成功,使用如下命令:

ssh localhost  
## 或者
ssh e2d670ea9ad7
## 或者

  其中,localhost意为“本地主机”,即“这台计算机”;e2d670ea9ad7为本机主机名,我们可以使用​​hostname​​​命令进行查看;10.141.0.42为本机IP地址,我们可以使用​​ifconfig​​命令进行查看。

  • 查看本机主机名:

2.1 Linux系统环境准备_解压缩_11

图11

  • 查看本机IP地址:

2.1 Linux系统环境准备_环境变量_12

图12

  • 远程登录成功后,若想退出,可以使用​​exit​​ 命令:

2.1 Linux系统环境准备_解压缩_13

图13