度過了難熬的考試月時期之後,最近和小伙伴一起參加的的比賽進入了緊張的準備時期。在進行工作的時候,發現有很多基礎的知識點,自己不是很清楚以及瞭解,所以在想,要不就邊學習的時候邊寫下學習日記,以供自己後來不懂的時候查看,同時以希望自己的一些所得能幫助到其他人。共勉之~ ...
度過了難熬的考試月時期之後,最近和小伙伴一起參加的的比賽進入了緊張的準備時期。在進行工作的時候,發現有很多基礎的知識點,自己不是很清楚以及瞭解,所以在想,要不就邊學習的時候邊寫下學習日記,以供自己後來不懂的時候查看,同時以希望自己的一些所得能幫助到其他人。共勉之~
前言
Secure Shell(縮寫為SSH),是一項創建在應用層和傳輸層基礎上的安全協議,為電腦上的Shell(殼層)提供安全的傳輸和使用環境。傳統的網路服務程式,如rsh、FTP、POP和Telnet其本質上都是不安全的;因為它們在網路上用明文傳送數據、用戶帳號和用戶口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一臺機器冒充真正的伺服器接收用戶傳給伺服器的數據,然後再冒充用戶把數據傳給真正的伺服器。而SSH是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。通過SSH可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。SSH之另一項優點為其傳輸的數據可以是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個安全的“通道”。
引用於維基百科Secure Shell
SSH的必要性
Hadoop的Master和Slave節點之間的通信,以及Spark的Master和Worker節點之間的通信,都是通過SSH來完成的。我們不希望他們之間的每次通信都輸入一次密碼,所以我們需要他們之間進行SSH免密碼登錄。
前期準備
我在實驗室的三台主機都是Centos 7,自帶了ssh
。如果沒有安裝的ssh
的可以使用:
yum install ssh
來安裝。
使用ssh-keygen
生成私鑰和公鑰
命令行:
ssh-keygen
無論彈出什麼信息都直接enter回車鍵跳過。兩下回車鍵之後就生成瞭如下文件:
其中id_rsa
是私鑰,id_rsa.pub
是公鑰。
使用>>
把公鑰內容追加到anthorized_keys
文件中。
命令行:
cat ~/.ssh/id_rsa/pub >> ~/.ssh./authorized_keys
其中authorized_keys
用於保存所有允許以當前用戶身份登錄到ssh
客戶端用戶的公鑰內容。
ps:Centos 7上是沒有
authorized_keys
這個文件的,所以追加之後會自動生成這個文件。
測試是否可以免密碼登錄
命令行:
ssh localhost
出現以下界面,說明可以免密碼登錄了。
此處localhost
為本機
按照上面,同時在其他兩台機子上執行同樣的命令
按照上面,同時在其他兩台機子上執行同樣的命令
按照上面,同時在其他兩台機子上執行同樣的命令
重要的事情說三遍!
把公鑰拷貝到其他主機上面的一種可行的方法
我們把三臺電腦分別取名為Master
、Slave1
、Slave2
。在Slave1
上執行
scp id_rsa.pub root@Master_ip:/root/.ssh/id_rsa.pub.slave1
其中,Master_ip
為Master
的ip
,後面的slave1
只是為了區別其他文件而起的。這個可以任意。
執行之後需要輸入Master
的root
的密碼之後,就把文件拷貝到Master
下了。
同樣Slave2
上執行
scp id_rsa.pub root@Master_ip:/root/.ssh/id_rsa.pub.slave2
執行之後可以查看Master
的.ssh
文件夾下存在剛剛的兩個文件了
緊接著的是,把上述兩個文件slave1
和slave2
追加到authorized_keys
中。
命令行:
cat id_rsa.pub.slave1 >> authorized_keys
cat id_rsa.pub.slave2 >> authorized_keys
至此,我們都把每台機子的公鑰都拷貝到Master
下麵的authorized_keys
中了。
把authorized_keys
文件也拷貝到其他的Slave
電腦中
命令行:(此時在Master
中的.ssh
文件夾下)
scp authorized_keys root@slave1_ip:/root/.ssh/authoried_keys
scp authorized_keys root@slave2_ip:/root/.ssh/authoried_keys
其中slave1_ip
和slave2_ip
,為每一臺slave
的ip
地址,輸入命令之後輸入每台的Slave
的密碼便可以。
結言:
到此,每台機子上面的authoried_keys都含有集群中每台機子的公鑰,都可以直接使用
ssh ip
的方式直接登錄了。
參見 王家林/王雁軍/王家虎的《Spark 核心源碼分析與開發實戰》
文章出自kwongtai'blog,轉載請標明出處!