Linux免密登陸


1 在2台服務器之間設置免密碼ssh登陸

假設目前有2台服務器:

1台Master(test7972)
1台Slave(test25572)

現在要設置它們之間免密碼ssh登陸。

2.1 配置Master(test7972)免密碼登陸Slave(test25572)

免密碼ssh登錄的原理是這樣的:

1.Master(NameNode | JobTracker)如果作為客戶端,實現無密碼公鑰認證,來連接到服務器Salve(DataNode | Tasktracker)上,需要在Master上生成一個密鑰對,包括1個公鑰和1個私鑰,然后需要將公鑰復制到所有的Slave上。

2.當Master通過SSH連接Salve時,Salve就會生成一個隨機數,並且用Master的公鑰對隨機數進行加密,並且發送給Master。

3.Master收到加密數之后,會使用自己的私鑰解密,並將解密數回傳給Slave。

4.Slave確認解密數無誤之后就允許Master進行連接了。

這就是一個公鑰認證過程,這個過程中不需要用戶手動輸入密碼。而具體到實現這個無密碼登錄的准備過程,重要的是將客戶端Master的公鑰復制到Slave上。

2.1.1 創建“.ssh”目錄

若“.ssh目錄”不存在,創建”.ssh目錄”:

mkdir ~/.ssh
1
2.1.2 修改“.ssh 目錄”權限。

chmod 700 ~/.ssh
1
2.1.3 創建Master(test7972)服務器的公鑰和私鑰

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
1
這個過程會在目錄:

~/.ssh/
下生成公鑰:

id_rsa
和私鑰:

id_rsa.pub
2.1.4 配置Master(test7972)本機ssh免密登錄做測試

同第1步類似,在Master(test7972)上配置一下本機的ssh免密登錄,將公鑰“id_rsa.pub”追加到授權的key里面:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
1
授權:

chmod 0600 ~/.ssh/authorized_keys
1
然后使用命令:

ssh localhost
1
做測試,沒問題就可以了。

注意: 登陸之后,記得執行:

exit
1
推出!

2.1.5 修改SSH配置文件"/etc/ssh/sshd_config"

修改SSH配置文件:

/etc/ssh/sshd_config
確保以下內容信息:

RSAAuthentication yes # 啟用 RSA 認證
PubkeyAuthentication yes # 啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

由於筆者使用的服務器均為:

Ubuntu 16.04.4 LTS
前2項均已設置為“yes”,而第3項背注釋了,但是不影響使用ssh免密登錄的效果,故這里酌情處理。

2.1.6 拷貝Master(test7972)的公鑰到Slave(test25572)上去

執行命令:

scp ~/.ssh/id_rsa.pub hadoop@test25572:~/

2.1.7 配置Slave(test25572)節點

登錄Slave(test25572)節點,執行以下操作:

1.修改.ssh權限:
chmod 700 ~/.ssh

2.把Master(test7972)的公鑰追加到Slave(test25572)的授權文件"authorized_keys"中去:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

3.修改該授權文件的權限:
chmod 600 ~/.ssh/authorized_keys

2.1.8 測試免密碼登錄

在Master(test7972)上執行:

ssh test25572

其中“test25572”已經在Master(test7972)的“/etc/hosts”文件中配置過了,如果這個登錄不需要輸入密碼,那么免密碼ssh登錄就設置成功了!

2.2 配置Slave(test25572)免密碼登陸Master(test7972)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM