任務目的
- 熟練安裝 JDK
- 重點掌握配置 SSH 免密登錄的方法
任務清單
- 任務1:安裝 JDK
- 任務2:配置 SSH 免密登錄
任務步驟
任務1:安裝JDK
1. 準備軟件
JDK 的安裝包已經爲大家準備好,在 /root/software 目錄下,可以使用如下命令進行查看:
cd /root/software/ # 進入目錄
ll # 羅列出當前文件或目錄的詳細信息,是ls -l的別名
圖1
2. 解壓壓縮包
tar -zxvf jdk-8u221-linux-x64.tar.gz
-
tar 命令:用於打包並壓縮和解包並解壓縮文件
-
使用格式:
- 打包並壓縮:tar -zcvf 打包壓縮名 文件名/目錄
- 解包並解壓縮:tar -zxvf *.tar.gz格式的打包壓縮文件
-
常用選項:
- z:gzip,通過 gzip 格式壓縮或者解壓縮
- -C:指定需要解壓的目錄,若是未指定,則解壓到當前目錄
-
解壓成功,進行驗證:
圖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 是把這三個變量導出爲全局變量。
- 大小寫必須嚴格區分。
如下圖所示:
圖3
添加完成,使用:wq
保存退出。
(3)讓配置文件立即生效,使用如下命令:
source /etc/profile
(4)檢測 JDK 是否安裝成功,使用命令查看 JDK 版本:
java -version
執行此命令後,若是出現 JDK 版本信息說明配置成功:
圖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 實現過程
具體原理流程如下圖所示:
圖5
4. SSH 實現步驟
因爲我們搭建的是僞分佈式集羣,所以只准備一臺節點,我們可以將此節點即作爲服務器端,也作爲客戶機端,實現自己免密登錄自己。
要想實現此功能,首先需要在此節點上生成root用戶的公鑰,然後將生成的公鑰文件複製到公鑰庫文件authorized_keys中,然後將公鑰庫文件authorized_keys放置到/root/.ssh目錄下,這樣以後每次使用root登錄本機的時候,就不需要輸入密碼了。具體操作如下:
(1)下載 SSH 服務並啓動
SSH 服務(openssh-server和openssh-clients)已經爲大家下載好,所以此處直接啓動即可:
/usr/sbin/sshd
SSH 服務啓動成功後,會默認開啓 22(SSH的默認端口)端口號,可以使用以下命令進行查看:
netstat -tnulp
執行命令,可以看到 22 號端口已經開啓,證明我們 SSH 服務啓動成功:
圖6
只要將 SSH 服務啓動成功,我們就可以進行遠程連接訪問了。開發人員比較常用的遠程連接工具有 Xshell、SecureCRT 等。接下來我們繼續配置SSH免密鑰登錄。
(2)首先生成密鑰對,使用命令:
ssh-keygen
## 或者
ssh-keygen -t rsa
語法解析:
ssh-keygen
:生成、管理和轉換認證密鑰。-t
:指定密鑰類型,包括RSA和DSA兩種密鑰,默認RSA。
上面一種是簡寫形式,提示要輸入信息時不需要輸入任何東西,直接回車三次即可。
圖7
從打印信息中可以看出,私鑰 id_rsa 和公鑰 id_rsa.pub 都已創建成功,並放在 /root/.ssh 目錄中:
圖8
(3)將公鑰放置到授權列表文件 authorized_keys 中,使用命令:
cp id_rsa.pub authorized_keys
驗證:
圖9
(4)修改授權列表文件 authorized_keys 的權限,使用命令:
chmod 600 authorized_keys
設置擁有者可讀可寫,其他人無任何權限(不可讀、不可寫、不可執行)。
圖10
(5)驗證免密登錄是否配置成功,使用如下命令:
ssh localhost
## 或者
ssh e2d670ea9ad7
## 或者
ssh 10.141.0.42
其中,localhost意爲“本地主機”,即“這臺計算機”;e2d670ea9ad7爲本機主機名,我們可以使用hostname
命令進行查看;10.141.0.42爲本機IP地址,我們可以使用ifconfig
命令進行查看。
- 查看本機主機名:
圖11
- 查看本機IP地址:
圖12
- 遠程登錄成功後,若想退出,可以使用
exit
命令:
圖13