Linux使用金鑰實現免密碼登陸

2021-10-10 10:01:46 字數 1808 閱讀 8651

公鑰和私鑰都屬於非對稱加密演算法的乙個實現,這個加密演算法的資訊交換過程是:

持有公鑰的一方(甲)在收到持有私鑰的一方(乙)的請求時,甲會在自己的公鑰列表中查詢是否有乙的公鑰,如果有則使用乙個隨機字串使用公鑰加密並傳送給乙。

乙收到加密的字串使用自己的私鑰進行解密,並將解密後的字串傳送給甲。

甲接收到乙傳送來的字串與自己的字串進行對比,如過通過則驗證通過,否則驗證失敗。

非對稱加密演算法不能使用相同的金鑰進行解密,也就是說公鑰加密的只能使用私鑰進行解密。

1. 在需要發起免密登陸的主機(客戶機)下生成公鑰和私鑰

.# ssh-keygen -t rsa ##-t rsa可以省略,預設就是生成rsa型別的金鑰

說明:命令執行後會有提示,輸入三次回車即可,執行完成後會在當前使用者的.ssh目錄下生成兩個檔案:id_rsa、id_rsa.pub檔案,前者時私鑰檔案,後者是公鑰檔案。

2. 將客戶機的公鑰id_rsa.pub檔案複製到被登陸的主機(伺服器)上的~/.ssh/authorized_keys 檔案中。

拷貝公鑰有兩種方法,其原理都相同:

方式一:使用 ssh-copy-id 直接拷貝

使用 ssh-copy-id 進行拷貝公鑰非常方便,只需要指定目標主機和目標主機的使用者即可。

.# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

執行這條命令後會自動將登入主機的公鑰檔案內容追加至目標主機中指定使用者(root).ssh目錄下的authorized_keys檔案中。這個過程是全自動的,非常方便。

方法二:自己建立檔案進行拷貝

在登入主機(客戶機)上建立authorized_keys檔案並將公鑰追加到該檔案。

先cd到登入機使用的使用者下的 .ssh 目錄,方便操作

.# cat id_rsa.pub >> authorized_keys

.# chmod 600 authorized_keys ##修改檔案許可權為600,該檔案有規定如果屬組其他人出現可寫則檔案就不會生效

在被登入機的指定使用者家目錄下建立 .ssh 目錄(這裡在root使用者下建立,因為要使用金鑰登陸到root使用者)

.# mkdir .ssh

.# chmod 700 .ssh ##將目錄許可權改為700該目錄的許可權必須是700才有效

將登入機建立的authorized_keys檔案拷貝到被登入機,使用scp

.# scp authorized_keys root @192.168.187.142:/root/.ssh/

authorized_keys 100% 402 576.4kb/s 00:00

3. 登入

使用客戶機a root使用者身份登陸到伺服器主機b

.# ssh [email protected]

last login: wed feb 13 15:24:30 2019 from 192.168.187.137

首次登入將彈出儲存資訊,輸入yes即可,此時已經實現了免密的金鑰登陸。

注意事項和說明

上例只能實現主機a免密登陸到主機b的root使用者,如果想讓主機b也免密登入到主機a,建立金鑰和拷貝步驟相同。

金鑰登陸的方式只能登入被登入機中 .ssh 目錄下有對應公鑰的使用者,如果想讓所有使用者都可以被登入則需要將authorized_keys檔案的內容追加到其他使用者的 ~/.ssh/authorized_keys 檔案中。

如果使用自己建立的authorized_keys檔案進行複製公鑰則要嚴格設定許可權,許可權不正確會導致檔案無法使用,也就無法進行金鑰驗證。

使用ssh基於金鑰實現3臺主機間免密碼登陸

第一步 在host01和 host 2和 host 3上面都要執行下面操作,產生公鑰和私鑰 該過程不輸入密碼 ssh keygen t rsa 第二步 host01,host 2和 host 3都執行以下操作,將各自公鑰新增到host01的authorized keys的檔案中.ssh copy i...

使用ssh基於金鑰實現3臺主機間免密碼登陸

第一步 在host01和host2和host3上面都要執行下面操作,產生公鑰和私鑰 該過程不輸入密碼 ssh keygen t rsa第二步 host01,host2和host3都執行以下操作,將各自公鑰新增到host01的authorized keys的檔案中.ssh copy id hadoop...

linux系統之間基於金鑰對免輸入密碼登陸

通常,我們登陸到一台linux主機是需要輸入密碼,這樣可以驗證登陸者的身份。這篇隨筆裡面我打算記錄一下配置基於ssh金鑰對登陸系統。在配置之前先和大家說明一下我遇到過的問題 剛接觸到linux時候首先有了家目錄的概念,為了使用,所以將 path html許可權改為777並改作為使用者的家目錄,這樣每...