文章目錄
- 前言
- 一、什么是 SSH?
- 二、ssh 配置無密碼登陸原理
- 三、Linux 系統上生成 SSH 密鑰和公鑰
- 四、登錄驗證
- 總結
前言
對于 Hadoop 的偽分布式和全分布式而言,Hadoop 的名稱節點(NameNode)需要啟動集群中所有機器的 Hadoop 的守護進程,這個過程可以通過 SSH 登陸來實現。Hadoop 并沒有提供 SSH 輸入密碼登陸的形式,因此為了能夠順利登陸每臺機器,需要將所有機器配置為名稱節點可以無密碼登陸的形式。一、什么是 SSH?
SSH 為 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協議。
SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH 最初是 UNIX 系統上的一個程序,后來又迅速擴展到其他操作平臺。SSH 在正確使用時可彌補網絡中的漏洞。
SSH 客戶端適用于多種平臺。幾乎所有 UNIX 平臺,包括 HP-UX、Linux、AIX、Solaris、Digital、UNIX、Irix 以及其他平臺,都可運行 SSH。
二、ssh 配置無密碼登陸原理
首先我們在自己的 Linux 系統上生成一對 SSH Key:SSH 密鑰和 SSH 公鑰。然后公鑰上傳到 Linux 服務器,之后我們就能無密碼 SSH 登陸了。
對于 Hadoop 的偽分布式和全分布式而言,Hadoop 的名稱節點(NameNode)需要啟動集群中所有機器的 Hadoop 的守護進程,這個過程可以通過 SSH 登陸來實現。Hadoop 并沒有提供 SSH 輸入密碼登陸的形式,因此為了能夠順利登陸每臺機器,需要將所有機器配置為名稱節點可以無密碼登陸的形式。
三、Linux 系統上生成 SSH 密鑰和公鑰
- 在 ssh 安裝完成但未配置之前(安裝 ssh 可以參考另一篇文章:大數據基礎系列 4:偽分布式 Hadoop 在 Ubuntu 上的安裝流程完整步驟及易錯點分析)。
- Linux 終端輸入
ssh localhost
會提示輸入密碼,輸入之后登陸成功。但是這樣登陸是需要輸入密碼的,這也是我們配置無密碼登陸的原因。 - 首先退出剛才的 ssh,就回到了我們原先的終端窗口,然后利用 ssh-keygen 生成密鑰,并將密鑰加入授權中,指令如下:
exit #退出剛才的ssh localhost
cd ~/.ssh/ #若沒有該目錄,請再執行一次ssh localhost
ssh-keygen -t rsa #會有提示,按回車即可
cat ./id_rsa.pub >> ./authorized_keys #加入授權
說明:
- 使用 ssh-keygen 用于生成 RSA 密鑰和公鑰,-t 表示 type,就是生成 RSA 加密的鑰匙。
- RSA 也是默認的加密類型,所以可以只輸入 ssh-keygen,默認的 RSA 長度是 2048 位,如果你非常注重安全,那么可以指定 4096 位的長度,指令如下:
ssh-keygen -b 4096 -t rsa
- SSH 密鑰會保存在 home 目錄下的 .ssh/id_rsa 文件中,SSH 公鑰保存在 .ssh/id_rsa.pub 文件中。
- 在 Linux 系統中,~ 代表的是用戶的主文件夾,即"/home/用戶名"這個目錄。
具體流程如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/matrix/.ssh/id_rsa): #按Enter鍵
Enter passphrase (empty for no passphrase): #輸入一個密碼
Enter same passphrase again: #再次輸入密碼
Your identification has been saved in /home/matrix/.ssh/id_rsa.
Your public key has been saved in /home/matrix/.ssh/id_rsa.pub.
The key fingerprint is:
e1:dc:ab:ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 matrix@vivid
The key's randomart image is:
+---[RSA 4096]----+
| .. |
| . . |
| . . .. . |
| . . o o.. E .|
| o S ..o ...|
| = ..+...|
| o . . .o .|
| .o . |
| .++o |
+-----------------+
四、登錄驗證
執行完成后,再用 ssh localhost 命令,無需密碼就可以直接登陸了(首次使用 SSH Key 登陸時需要輸入一次 SSH 密鑰的加密密碼,將來會自動登錄,不再需要輸入密鑰的密碼),具體如下圖所示:
總結
本文我們掌握了在 Linux 中 ssh 配置無密碼登陸完整步驟以及需要注意的問題。本文算是學習 Hadoop 的入門技巧篇,掌握了 ssh 登陸的配置,一方面理解系統之間的通信,權限,另一方面可以讓你在后面集群的搭建中省下不少事。我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!