兩臺服務器之間無密碼傳輸數(shù)據(jù)和操作的方法
我們知道如果要向遠程服務器傳輸數(shù)據(jù)和操作必須輸入用戶名和密碼遠程登錄服務器 ,或用FTP等協(xié)議,都需要權限控制。
然而如果是兩臺服務器間的軟件需要通訊和數(shù)據(jù)傳輸,如hadoop集群中機器互訪,是不是每次也要輸入用戶名和密碼?那是不是很麻煩?下面介紹SSH來解決這個問題(不是JAVA中的SSH概念)
SSH是一種網(wǎng)絡協(xié)議,用于計算機之間的加密登錄。
如果一個用戶從本地計算機,使用SSH協(xié)議登錄另一臺遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。
最早的時候,互聯(lián)網(wǎng)通信都是明文通信,一旦被截獲,內(nèi)容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協(xié)議,將登錄信息全部加密,成為互聯(lián)網(wǎng)安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經(jīng)成為Linux系統(tǒng)的標準配置。
需要指出的是,SSH只是一種協(xié)議,存在多種實現(xiàn),既有商業(yè)實現(xiàn),也有開源實現(xiàn)。本文針對的實現(xiàn)是OpenSSH,它是自由軟件,應用非常廣泛。
此外,本文只討論SSH在Linux Shell中的用法。如果要在Windows系統(tǒng)中使用SSH,會用到另一種軟件PuTTY
Hadoop運行過程中需要管理遠端Hadoop守護進程,在Hadoop啟動以后,NameNode是通過SSH(Secure Shell)來啟動和停止各個DataNode上的各種守護進程的。
這就必須在節(jié)點之間執(zhí)行指令的時候是不需要輸入密碼的形式,故我們需要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登錄并啟動DataName進程,同樣原理,DataNode上也能使用SSH無密碼登錄到NameNode。
下面就安裝總結一下網(wǎng)友和自己的經(jīng)驗。
環(huán)境
CentOS7.0
安裝
yum install ssh 安裝SSH協(xié)議 yum install rsync (rsync是一個遠程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機間的文件) service sshd restart 啟動服務
查看安裝
rpm –qa | grep openssh rpm –qa | grep rsync
為避免麻煩,每個服務器上都要裝。
配置Master無密碼登錄所有Salve
1)SSH無密碼原理
Master(NameNode | JobTracker)作為客戶端,要實現(xiàn)無密碼公鑰認證,連接到服務器Salve(DataNode | Tasktracker)上時,需要在Master上生成一個密鑰對,包括一個公鑰和一個私鑰,而后將公鑰復制到所有的Slave上。當Master通過SSH連接Salve時,Salve就會生成一個隨機數(shù)并用Master的公鑰對隨機數(shù)進行加密,并發(fā)送給Master。Master收到加密數(shù)之后再用私鑰解密,并將解密數(shù)回傳給Slave,Slave確認解密數(shù)無誤之后就允許Master進行連接了。這就是一個公鑰認證過程,其間不需要用戶手工輸入密碼。重要過程是將客戶端Master復制到Slave上。
2)Master機器上生成密碼對
在Master節(jié)點上執(zhí)行以下命令:
ssh-keygen –t rsa –P ''
這條命是生成其無密碼密鑰對,詢問其保存路徑時直接回車采用默認路徑。生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/home/hadoop/.ssh"目錄下(每臺服務器看各自的生成路徑信息 因為hadoop為用戶名,所以生成在當前用戶名下)。
查看"/home/hadoop/"下是否有".ssh"文件夾,且".ssh"文件下是否有兩個剛生產(chǎn)的無密碼密鑰對。
接著在Master節(jié)點上做如下配置,把id_rsa.pub追加到授權的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在驗證前,需要做兩件事兒。第一件事兒是修改文件"authorized_keys"權限(權限的設置非常重要,因為不安全的設置安全設置,會讓你不能使用RSA功能),另一件事兒是用root用戶設置"/etc/ssh/sshd_config"的內(nèi)容。使其無密碼登錄有效。
1)修改文件"authorized_keys"
chmod 600 ~/.ssh/authorized_keys
備注:如果不進行設置,在驗證時,扔提示你輸入密碼,在這里花費了將近半天時間來查找原因。
2)設置SSH配置
用root用戶登錄服務器修改SSH配置文件"/etc/ssh/sshd_config"的下列內(nèi)容。
RSAAuthentication yes # 啟用 RSA 認證 PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式 AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)
設置完之后記得重啟SSH服務,才能使剛才設置有效。
service sshd restart
退出root登錄,使用hadoop普通用戶驗證是否成功。
ssh localhost
從上圖中得知無密碼登錄本級已經(jīng)設置完畢,接下來的事兒是把公鑰復制所有的Slave機器上。使用下面的命令格式進行復制公鑰:
scp ~/.ssh/id_rsa.pub 遠程用戶名@遠程服務器IP:~/
例如:
scp ~/.ssh/id_rsa.pub hadoop@192.168.1.3:~/
上面的命令是復制文件"id_rsa.pub"到服務器IP為"192.168.1.3"的用戶為"hadoop"的"/home/hadoop/"下面。
下面就針對IP為"192.168.1.3"的Slave1.Hadoop的節(jié)點進行配置。
1)把Master.Hadoop上的公鑰復制到Slave1.Hadoop上
從上圖中我們得知,已經(jīng)把文件"id_rsa.pub"傳過去了,因為并沒有建立起無密碼連接,所以在連接時,仍然要提示輸入輸入Slave1.Hadoop服務器用戶hadoop的密碼。為了確保確實已經(jīng)把文件傳過去了,用SecureCRT登錄Slave1.Hadoop:192.168.1.3服務器,查看"/home/hadoop/"下是否存在這個文件。
從上面得知我們已經(jīng)成功把公鑰復制過去了。
2)在"/home/hadoop/"下創(chuàng)建".ssh"文件夾
這一步并不是必須的,如果在Slave1.Hadoop的"/home/hadoop"已經(jīng)存在就不需要創(chuàng)建了,因為我們之前并沒有對Slave機器做過無密碼登錄配置,所以該文件是不存在的。用下面命令進行創(chuàng)建。(備注:用hadoop登錄系統(tǒng),如果不涉及系統(tǒng)文件修改,一般情況下都是用我們之前建立的普通用戶hadoop進行執(zhí)行命令。)
mkdir ~/.ssh
然后是修改文件夾".ssh"的用戶權限,把他的權限修改為"700",用下面命令執(zhí)行:
chmod 700 ~/.ssh
備注:如果不進行,即使你按照前面的操作設置了"authorized_keys"權限,并配置了"/etc/ssh/sshd_config",還重啟了sshd服務,在Master能用"ssh localhost"進行無密碼登錄,但是對Slave1.Hadoop進行登錄仍然需要輸入密碼,就是因為".ssh"文件夾的權限設置不對。這個文件夾".ssh"在配置SSH無密碼登錄時系統(tǒng)自動生成時,權限自動為"700",如果是自己手動創(chuàng)建,它的組權限和其他權限都有,這樣就會導致RSA無密碼遠程登錄失敗。
對比上面兩張圖,發(fā)現(xiàn)文件夾".ssh"權限已經(jīng)變了。
3)追加到授權文件"authorized_keys"
到目前為止Master.Hadoop的公鑰也有了,文件夾".ssh"也有了,且權限也修改了。這一步就是把Master.Hadoop的公鑰追加到Slave1.Hadoop的授權文件"authorized_keys"中去。使用下面命令進行追加并修改"authorized_keys"文件權限:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
4)用root用戶修改"/etc/ssh/sshd_config"
具體步驟參考前面Master.Hadoop的"設置SSH配置",具體分為兩步:第1是修改配置文件;第2是重啟SSH服務。
5)用Master.Hadoop使用SSH無密碼登錄Slave1.Hadoop
當前面的步驟設置完畢,就可以使用下面命令格式進行SSH無密碼登錄了。
ssh 遠程服務器IP
從上圖我們主要3個地方,第1個就是SSH無密碼登錄命令,第2、3個就是登錄前后"@"后面的機器名變了,由"Master"變?yōu)榱?Slave1",這就說明我們已經(jīng)成功實現(xiàn)了SSH無密碼登錄了。
最后記得把"/home/hadoop/"目錄下的"id_rsa.pub"文件刪除掉。
rm –r ~/id_rsa.pub
到此為止,我們經(jīng)過前5步已經(jīng)實現(xiàn)了從"Master.Hadoop"到"Slave1.Hadoop"SSH無密碼登錄,下面就是重復上面的步驟把剩余的Slave服務器進行配置。這樣,我們就完成了"配置Master無密碼登錄所有的Slave服務器"。
擴展
如果實現(xiàn)Slave服務器無密碼登錄Master?
以上所述是小編給大家介紹的兩臺服務器之間無密碼傳輸數(shù)據(jù)和操作的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Centos服務器上根據(jù)端口號查詢jar包根據(jù)jar包查端口號的操作方法
在開發(fā)springboot服務器時,經(jīng)常會遇到其他人部署的java服務,需要自己維護,經(jīng)常面臨找不到jar包位置,或者不知道占用端口,不知道啟動命令的問題,這里記錄一下常用的centos服務器上的命令,方便大家后續(xù)運維時使用,感興趣的朋友一起看看吧2023-12-12win10下VSCode+CMake+Clang+GCC環(huán)境搭建教程圖解
這篇文章主要介紹了win10下VSCode+CMake+Clang+GCC環(huán)境搭建,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10