SSH密鑰登陸過程
- 客戶端通過
ssh-keygen
生成自己的公鑰和私鑰。 - 手動將客戶端的公鑰放入遠程服務器的指定位置。
- 客戶端向服務器發起 SSH 登錄的請求。
- 服務器收到用戶 SSH 登錄的請求,發送一些隨機數據給用戶,要求用戶證明自己的身份。
- 客戶端收到服務器發來的數據,使用私鑰對數據進行簽名,然后再發還給服務器。
- 服務器收到客戶端發來的加密簽名后,使用對應的公鑰解密,然后跟原始數據比較。如果一致,就允許用戶登錄。
在服務器中配置遠程用戶公鑰(即客戶端需要將自己的公鑰配置在Linux服務器中)
-
客戶端生成本地公私鑰對
ssh-keygen
一路enter鍵確認,最后會在
C:\Users\{你的用戶名}\.ssh
目錄下生成兩個文件,id_rsa
和id_rsa.pub
; -
將客戶端公鑰手動上傳到Linux服務器中
-
復制客戶端公鑰
在終端(powershell,沒有就下載一個波,因為cmd不支持shell指令)打開
C:\Users\{你的用戶名}\.ssh
路徑,執行Get-Content ./id_rsa.pub
-
Linux中,
authorized_keys
文件位于~/.ssh/authorized_keys
,如果沒有這個文件可以手動創建,并確認authorized_keys
文件權限為600,.ssh
目錄權限為700。您可以使用以下命令來確認
authorized_keys
文件權限為 600,.ssh
目錄權限為 700:bashCopy code # 確認 authorized_keys 文件權限為 600 ls -l ~/.ssh/authorized_keys# 確認 .ssh 目錄權限為 700 ls -ld ~/.ssh
這些命令將會輸出文件和目錄的詳細權限信息。確保權限如下:
authorized_keys
文件權限應該是-rw-------
或者600
.ssh
目錄權限應該是drwx------
或者700
如果權限不正確,您可以使用
chmod
命令來更改它們的權限。例如:bashCopy code # 更改 authorized_keys 文件權限為 600 chmod 600 ~/.ssh/authorized_keys# 更改 .ssh 目錄權限為 700 chmod 700 ~/.ssh
-
將客戶端公鑰粘貼到
authorized_keys
文件上。
-
-
確認linux服務器開啟了允許SSH免密登錄
-
確認linux服務器/etc/ssh/sshd_config配置文件中開啟了允許SSH免密登錄。
主要就是確認是否有下面這一行,并且沒有被注釋。PubkeyAuthentication yes
-