ssh免密登入原理與實現

2021-10-07 16:28:10 字數 2538 閱讀 9422

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

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

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

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

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

ssh使用私鑰登入大致步驟就是:主機a(客戶端)建立公鑰私鑰,並將公鑰複製到主機b(被登陸機)的指定使用者下,然後主機a使用儲存私鑰的使用者登入到主機b對應儲存公鑰的使用者。

(1)實驗環境

兩台主機:

主機a(客戶機):192.168.20.30

主機b(被登入機):192.168.20.31

(2)實驗開始

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

# ssh-keygen -t rsa     ##-t rsa可以省略,預設就是生成rsa型別的金鑰
說明:命令執行後會有提示,輸入三次回車即可,執行完成後會在當前使用者的.ssh目錄下生成兩個檔案:id_rsa、id_rsa.pub檔案,前者時私鑰檔案,後者是公鑰檔案(拷貝到其他主機只需要拷貝這個檔案的內容)

2.將公鑰複製到被登陸的主機上的 ~/.ssh/authorized_keys 檔案中

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

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

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

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

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

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

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

1 # cat id_rsa.pub >> authorized_keys

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

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

# mkdir .ssh

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

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

1 # scp authorized_keys [email protected]:/root/.ssh/

2 authorized_keys 100% 402 576.4kb/s 00:00

登入使用主機a已root使用者身份登陸到主機b

1 # ssh [email protected]

2 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檔案進行複製公鑰則要嚴格設定許可權,許可權不正確會導致檔案無法使用,也就無法進行金鑰驗證。

(1)口令驗證登入

(2) 金鑰驗證登入

金鑰驗證的前提需要登陸主機生成一對金鑰(公鑰和私鑰),並將公鑰放置在伺服器上。

ssh金鑰登入可以實現免密登入,免密登陸有很多用途:例如scp免認證、rsync備份免互動等一切使用ssh認證的地方均可以免互動,也就實現了自動化。

ssh實現免密登入

假設現在有兩台主機a和b,其中主機b有乙個使用者名叫caixiong,ip是22.33.44.55,現在想要實現ssh免密從主機a登入到主機b的caixiong使用者,只需要下面三步操作就可以完成。第一步 在主機a上生成公 私鑰對。如果之前已經生成過了金鑰對則跳過此步 ssh keygen t rs...

實現ssh免密登入

設定ssh無密碼登入可以提高我們主機的安全性。ssh 無密碼登入要使用公鑰與私鑰。linux下可以用ssh keygen生成公鑰 私鑰對,接下來以centos為例。例圖 實驗主機a無金鑰訪問主機b 實戰部分 主機cent65 192.168.1.65 主機cent67 192.168.1.67 現想...

SSH實現免密登入

目的 在server1上免密登入server2 1.在server1上執行命令 ssh keygen t rsa p 生成公鑰和私鑰,預設路徑為 root ssh 2.將 id rsa.pub檔案拷貝到遠端伺服器server2,然後執行命令 cat id rsa.pub root ssh autho...