設置 SSH 通過密鑰登錄


設置 SSH 通過密鑰登錄

密鑰形式登錄的原理是:利用密鑰生成器制作一對密鑰——一只公鑰和一只私鑰。

將公鑰添加到服務器的某個賬戶上,然后在客戶端利用私鑰即可完成認證並登錄。這樣一來,沒有私鑰,任何人都無法通過 SSH 暴力破解你的密碼來遠程登錄到系統。

此外,如果將公鑰復制到其他賬戶甚至主機,利用私鑰也可以登錄。

下面來講解如何在 Linux 服務器上制作密鑰對,將公鑰添加給賬戶,設置 SSH,最后通過客戶端登錄。

制作密鑰對

這里通過服務器來制作密鑰對,一般這個服務器賬戶是你打算通過密鑰登錄的賬號,執行

[~]# ssh-keygen     #創建密鑰對
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xx/.ssh/id_rsa):      #默認就行,按enter 
Created directory 'home/xx/.ssh'.
Enter passphrase (empty for no passphrase):     #輸入密鑰鎖碼,或留空按enter
Enter same passphrase again:   #再輸一遍密鑰鎖碼

Your identification has been saved in home/xx/.ssh/id_rsa.    #私鑰
Your public key has been saved in home/xx/.ssh/id_rsa.pub.    #公鑰

The key fingerprint is:
xxx
The key's randomart image is:
+--[ RSA 2048]----+
|  o*.            |
| o..+            |
|o  .             |
| +  .            |
|   S             |
|                 |
|                 |
|                 |
|                 |
+-----------------+
[~]# 

密鑰鎖碼在使用私鑰時必須輸入,這樣就可以保護私鑰不被盜用。當然,也可以留空,實現無密碼登錄。

現在,在 家目錄中生成了一個 .ssh 的隱藏目錄,內含兩個密鑰文件。id_rsa 為私鑰,id_rsa.pub 為公鑰。

服務器配置

在服務器上安裝公鑰

鍵入以下命令,在服務器上安裝公鑰:

[~]# cd $HOME/.ssh
[.ssh]# cat id_rsa.pub >> authorized_keys

如此便完成了公鑰的安裝。為了確保連接成功,請保證以下文件權限正確:

chmod 600 authorized_keys ; chmod 700 ~/.ssh

配置SSH密鑰登錄功能

編輯 /etc/ssh/sshd_config 文件,進行如下設置:

# vim /etc/ssh/sshd_config 
# 啟動ssh密鑰登錄
RSAAuthentication yes
PubkeyAuthentication yes

啟動ssh密鑰登錄的快速腳本:

sudo sed -r -i '/RSAAuthentication/d' /etc/ssh/sshd_config
sudo sed -r -i '/PubkeyAuthentication/d' /etc/ssh/sshd_config
sudo sh -c "echo 'RSAAuthentication yes' >> /etc/ssh/sshd_config"
sudo sh -c "echo 'PubkeyAuthentication yes' >> /etc/ssh/sshd_config"

另外,請留意 root 用戶能否通過 SSH 登錄:

# root用戶可以通過ssh登錄(禁用改為no)
PermitRootLogin yes

阻止 root 用戶通過 SSH 登錄:

sudo sed -r -i '/PermitRootLogin/d' /etc/ssh/sshd_config
sudo sh -c "echo 'PermitRootLogin no' >> /etc/ssh/sshd_config"

當你完成全部設置,並以密鑰方式登錄成功后,再禁用密碼登錄:

# 允許密碼登錄(禁用改為no)
PasswordAuthentication yes

禁用密碼登錄的快速腳本:

sudo sed -r -i '/PasswordAuthentication/d' /etc/ssh/sshd_config
sudo sh -c "echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config"

最后,重啟 SSH 服務:

sudo service sshd restart

ssh客戶端配置私鑰

使用 WinSCP、SFTP 等工具將私鑰文件 id_rsa 下載到客戶端機器上;緊接着進行配置。

Putty

打開 PuTTYGen,單擊 Actions 中的 Load 按鈕,載入你剛才下載到的私鑰文件。如果你剛才設置了密鑰鎖碼,這時則需要輸入。

載入成功后,PuTTYGen 會顯示密鑰相關的信息。在 Key comment 中鍵入對密鑰的說明信息,然后單擊 Save private key 按鈕即可將私鑰文件存放為 PuTTY 能使用的格式。

今后,當你使用 PuTTY 登錄時,可以在左側的 Connection -> SSH -> Auth 中的 Private key file for authentication: 處選擇你的私鑰文件,然后即可登錄了,過程中只需輸入密鑰鎖碼即可。

xshell

在新建/現有的會話中,依次點擊:

1、連接-用戶身份驗證

2、方法(M)選為Pubilc Key

3、輸入用戶名。

4、在用戶密鑰欄,點擊瀏覽(B)選擇你下載下來的密鑰(id_rsa)。

確定連接即可。


免責聲明!

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



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