SSH無密碼驗證可能出現的問題
一、安裝和啟動SSH協議
假設沒有安裝ssh和rsync,可以通過下面命令進行安裝。
sudo apt-get install ssh 安裝SSH協議 sudo apt-get install rsync service sshd restart 啟動服務 |
(rsync是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案)
確保所有的伺服器都安裝,上面命令執行完畢,各臺機器之間可以通過密碼驗證相互登。
Last login: Mon Oct 29 14:01:11 2012 from 10.196.80.99 hadoop@namenode:~$ ssh localhost The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is c0:b3:7d:6d:17:94:02:e1:e4:67:39:4f:08:ff:74:cf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. hadoop@localhost's password: … … Last login: Mon Oct 29 14:25:47 2012 from 10.196.80.99 hadoop@namenode:~$ |
hadoop@namenode:~$ ssh datanode1 The authenticity of host 'datanode1 (10.196.80.91)' can't be established. ECDSA key fingerprint is dc:8b:7b:82:25:74:0c:ec:15:a7:3b:2a:e6:c3:a0:2e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'datanode1,10.196.80.91' (ECDSA) to the list of known hosts. hadoop@datanode1's password: Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686) … … hadoop@datanode1:~$ |
二、配置Master無密碼登入所有Salve
1)SSH無密碼原理
Master(NameNode |JobTracker)作為客戶端,要實現無密碼公鑰認證,連線到伺服器Salve(DataNode |Tasktracker)上時,需要在Master上生成一個金鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到所有的Slave上。
當Master通過SSH連線Salve時,Salve就會生成一個隨機數並用Master的公鑰對隨機數進行加密,併傳送給Master。Master收到加密數之後再用私鑰解密,並將解密數回傳給Slave,Slave確認解密數無誤之後就允許Master進行連線了。這就是一個公鑰認證過程,其間不需要使用者手工輸入密碼。
重要過程是將客戶端Master複製到Slave上。
2)Master機器上生成密碼對
在Master節點上執行以下命令:
ssh-keygen –t rsa –P '' |
這條命令是生成其無密碼金鑰對,詢問其儲存路徑時直接回車採用預設路徑。生成的金鑰對:id_rsa和id_rsa.pub,預設儲存在"/home/hadoop/.ssh"目錄下。
hadoop@namenode:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: c8:5e:3e:c1:9b:52:6f:24:a5:e4:c1:1c:00:8d:fb:3b hadoop@namenode The key's randomart image is: +--[ RSA 2048]----+ | .+... | | . .o . | | . = . | | .. = + | | .o S . | | ..+ B | | o.= o | | E. o | | . | +-----------------+ hadoop@namenode:~$ |
檢視"/home/hadoop/"下是否有".ssh"資料夾,且".ssh"檔案下是否有兩個剛生產的無密碼金鑰對。
hadoop@namenode:~/.ssh$ cat id_rsa.pub >> authorized_keys |
在驗證前,需要做兩件事兒。第一件事兒是修改檔案"authorized_keys"許可權(許可權的設定非常重要,因為不安全的設定安全設定,會讓你不能使用RSA功能),另一件事兒是用root使用者設定"/etc/ssh/sshd_config"的內容。使其無密碼登入有效。
hadoop@namenode:~/.ssh$ chmod 600 authorized_keys |
備註:如果不進行設定,在驗證時,扔提示你輸入密碼,在這裡花費了將近半天時間來查詢原因。
3) 設定SSH配置
用root使用者登入伺服器修改SSH配置檔案"/etc/ssh/sshd_config"的下列內容。(在Ubuntu12.04系統裡面,貌似不用修改此檔案)
1.RSAAuthentication yes # 啟用 RSA 認證 2.PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式 3.AuthorizedKeysFile /home/hadoop/.ssh/authorized_keys # 公鑰檔案路徑(和上面生成的檔案同) |
退出root登入,使用hadoop普通使用者驗證是否成功
hadoop@namenode:~/.ssh$ ssh localhost Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic-pae i686) * Documentation: https://help.ubuntu.com/ 191 packages can be updated. 51 updates are security updates. Last login: Mon Oct 29 14:43:08 2012 from localhost hadoop@namenode:~$ |
從上圖中得知無密碼登入本級已經設定完畢,接下來的事兒是把公鑰複製所有的Slave機器上。使用下面的命令格式進行復制公鑰:
scp ~/.ssh/id_rsa.pub 遠端使用者名稱@遠端伺服器IP:~/
例如:
scp ~/.ssh/id_rsa.pub hadoop@10.196.80.1:~/
上面的命令是複製檔案"id_rsa.pub"到伺服器IP為"10.196.80.91"的使用者為"hadoop"的"/home/hadoop/"下面。
4)把namenode上的公鑰複製到datanode1上
先在每個slave機器的/home/hadoop/下新建 .ssh 資料夾。
hadoop@namenode:~/.ssh$ scp authorized_keys hadoop@datanode1:/home/hadoop/.ssh/ hadoop@datanode1's password: authorized_keys 100% 397 0.4KB/s 00:00 hadoop@namenode:~/.ssh$ |
從上圖中我們得知,已經把檔案"id_rsa.pub"傳過去了,因為並沒有建立起無密碼連線,所以在連線時,仍然要提示輸入輸入database1伺服器使用者hadoop的密碼。為了確保確實已經把檔案傳過去了,用SecureCRT登入datanode1:10.196.80.91伺服器,檢視"/home/hadoop/"下是否存在.ssh這個資料夾。存在的話然後是修改資料夾".ssh"的使用者許可權,把他的許可權修改為"700",用下面命令執行:
chmod 700 ~/.ssh |
備註:如果不進行,即使你按照前面的操作設定了"authorized_keys"許可權,並配置了"/etc/ssh/sshd_config",還重啟了sshd服務,在Master能用"ssh localhost"進行無密碼登入,但是對Slave1.Hadoop進行登入仍然需要輸入密碼,就是因為".ssh"資料夾的許可權設定不對。這個資料夾".ssh"在配置SSH無密碼登入時系統自動生成時,許可權自動為"700",如果是自己手動建立,它的組許可權和其他許可權都有,這樣就會導致RSA無密碼遠端登入失敗。
5)追加到授權檔案"authorized_keys"
到目前為止Master.Hadoop的公鑰也有了,資料夾".ssh"也有了,且許可權也修改了。這一步就是把Master.Hadoop的公鑰追加到Slave1.Hadoop的授權檔案"authorized_keys"中去。使用下面命令進行追加並修改"authorized_keys"檔案許可權:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys |
用root使用者修改"/etc/ssh/sshd_config"
具體步驟參考前面Master.Hadoop的"設定SSH配置",具體分為兩步:第1是修改配置檔案;第2是重啟SSH服務。
【Ubuntu下不用這一步操作貌似也是可以的。】
用namenode使用SSH無密碼登入datanode*
當前面的步驟設定完畢,就可以使用下面命令格式進行SSH無密碼登入了。
ssh 遠端伺服器IP
最後記得把所有Slave節點的"/home/hadoop/.ssh"目錄下的"id_rsa.pub"檔案刪除掉。
rm –r ~/id_rsa.pub |
到此為止,我們經過前5步已經實現了從"Master"到"Slave1"SSH無密碼登入,下面就是重複上面的步驟把剩餘的兩臺(Slave2和Slave3)Slave伺服器進行配置。這樣,我們就完成了"配置Master無密碼登入所有的Slave伺服器"。
6)配置所有Slave無密碼登入Master
和Master無密碼登入所有Slave原理一樣,就是把Slave的公鑰追加到Master的".ssh"資料夾下的"authorized_keys"中,記得是追加(>>)。
操作之前,先把namenode的/etc/hosts檔案通過scp複製到各個datanodede 的/home/hadoop/Downloads資料夾下,然後登陸各個namenode使用sudo cp命令覆蓋hosts檔案。
其他的datanode類似
首先建立"datanode2"自己的公鑰和私鑰,並把自己的公鑰追加到"authorized_keys"檔案中。用到的命令如下:
ssh-keygen –t dsa–P '' cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys |
接著是用命令"scp"複製"datanode"的公鑰"id_dsa.pub"到"namenode"的"/home/hadoop/"目錄下,並追加到"namenode"的"authorized_keys"中。
在"namenode"伺服器的操作
用到的命令如下:
cat id_dsa.pub >> authorized_keys |
然後刪除掉剛才複製過來的"id_rsa.pub"檔案。
最後是測試從"datanode"到"namenode"無密碼登入。
然後剩餘機器同樣的配置。
相關文章
- 完成ssh無密碼的驗證,採用公鑰、私鑰密碼
- 普通使用者SSH無密碼互信建立 出現的問題以及解決辦法密碼
- ssh無密碼登入認證失敗密碼
- [SSH服務]——一個SSH無密碼登陸實驗密碼
- [linux]ssh訪問無需密碼Linux密碼
- 密碼找回功能可能存在的問題密碼
- 無密碼驗證:客戶端密碼客戶端
- 如何實現 SSH 無密碼登入密碼
- teams 更改密碼後無法登入,提示使用 Microsoft Authenticator 驗證問題密碼ROS
- 教你如何進行SSH無密碼訪問密碼
- oracle 11g 密碼延遲驗證問題Oracle密碼
- 密碼找回功能可能存在的問題(補充)密碼
- openldap中使用者密碼加密之後的驗證問題。LDA密碼加密
- ssh訪問不用密碼密碼
- SSH認證免密碼登入密碼
- 安裝Oracle RAC時,不能驗證ASMSNMP密碼問題的解決OracleASM密碼
- mac php 圖片驗證碼無法顯示問題MacPHP
- GitHub不再支援密碼驗證解決方案:SSH免密與Token登入配置Github密碼
- Linux SSH無密碼登入Linux密碼
- ThinkPHP V6.0.12在php8.1下驗證碼出現問題PHP
- 用某語言API實現讓伺服器無密碼驗證API伺服器密碼
- ACCESS 密碼驗證/文字驗證中的小坑密碼
- 無密碼身份驗證:安全、簡單且部署快速密碼
- Oracle 密碼驗證方式Oracle密碼
- SSH 無密碼遠端執行指令碼密碼指令碼
- ZBlog關閉驗證碼功能(出現驗證碼出錯請關閉)
- 單例模式中的DDCP可能出現的問題單例模式
- SSH無需密碼金鑰登入密碼
- 點選驗證碼不能實現重新整理問題
- 利用Dll實現通用密碼驗證框 (轉)密碼
- 密碼過期引起的ssh無法登陸密碼
- 關於CSS中的float可能出現的小問題CSS
- ORACLE 密碼驗證函式Oracle密碼函式
- 建立使用者時的密碼校驗問題密碼
- SSH無密碼登入到指定機器密碼
- linux 設定ssh無密碼登陸Linux密碼
- linux環境驗證碼不顯示,除了GD和BOM問題,還可能是Freetype問題Linux
- 增加SSH無密碼信任連線的安全性密碼