Linux伺服器安全 SSH 使用者金鑰認證登入

2021-09-18 02:14:12 字數 2987 閱讀 6959

ssh 提供兩種安全驗證方式:

1. 基於口令:客戶端使用賬號和口令登入伺服器,所有傳輸資料都會被加密。但可能存在偽造伺服器冒充真正的伺服器與客戶端進行互動,不能避免中間人攻擊。

2. 基於金鑰:使用一對金鑰(私鑰 + 公鑰),將公鑰放置到伺服器註冊。當使用者從客戶端登入伺服器時,伺服器會接到使用金鑰(即註冊在伺服器的公鑰)進行安全驗證請求,伺服器首先比對從客戶端傳送過來的公鑰與在己方註冊的公鑰是否一致,如果一致,伺服器會使用該公鑰加密資料向客戶端發起 "挑戰"[1],從而避免中間人攻擊。

ssh 協議主要分成三個協議:

1. 傳輸層協議(the transport layer protocol):傳輸層協議提供伺服器認證,資料機密性,資訊完整性等支援。

2. 使用者認證協議(the user authentication protocol):使用者認證協議為伺服器提供客戶端的身份鑑別。

3. 連線協議(the connection protocol):連線協議將加密的資訊隧道劃分成若干邏輯通道,提供給更高層應用協議使用。

openssh 提供了以下幾個工具:

1. ssh:實現 ssh 協議,用以建立安全連線,它替代了較早的 rlogin 和 telnet。

2. scp, sftp:利用 ssh 協議遠端傳輸檔案,它替代了較早的 rcp。

3. sshd:ssh 伺服器守護程序,執行在伺服器端。

4. ssh-keygen:用以生成 rsa 或 dsa 金鑰對。

5. ssh-agent, ssh-add:管理金鑰的工具。

6. ssh-keyscan:掃瞄網路中的主機,記錄找到的公鑰。

1.在使用者目錄(例如root使用者就是cd /root)下新建乙個.ssh目錄,並將其目錄許可權改為700(僅使用者自身有讀寫操作許可權):

# cd /root

# mkdir .ssh

# chmod 700 .ssh

2.進入.ssh目錄,使用ssh-keygen命令生成rsa金鑰對:

# ssh-keygen –t rsa

如果私鑰檔案不需要加密,一路直接按回車即可。如果需要加密,如下圖所示地方輸入相應的密碼即可:

3.這時生成了兩個檔案:id_rsa和id_rsa.pub,其中前乙個為私鑰,後乙個為公鑰,公鑰須保留在伺服器上,私鑰拷貝到客戶端機器上。

4.在.ssh目錄中新建乙個檔名為:authorized_keys,將公鑰內容拷貝到這個檔案中,並將檔案許可權改為600(僅使用者自身有讀寫許可權):

# touch authorized_keys

# cat id_rsa.pub >> authorized_keys (雙尖括號》表示像向檔案中追加)

# chmod 600 authorzied_keys

到此,伺服器端的金鑰設定完成,這裡需注意要保證.ssh和authorized_keys都僅使用者自身有寫許可權,否則驗證無效,這也是系統處於安全性考慮做的設定。

首先我們需要將在伺服器端生成的私鑰id_rsa拷貝到要用來登入伺服器的客戶端電腦。接下來根據客戶端電腦作業系統的不同進行分別說明:

windows系統

在windows系統下,一般我們採用不同的x server工具來登入,需要先將私鑰匯入到登入工具的金鑰管理器,建立乙個新的連線,使用者名稱和主機的填寫與採用使用者名稱密碼登入一樣,登入不再選擇」password」而是」public key",user name填寫自己的登入使用者名稱,user key選擇之前匯入的伺服器私鑰 ,儲存之後,即可無密碼登入。

linux系統

linux系統下設定同樣先將伺服器私鑰拷貝到客戶端

1.與伺服器端一樣,在使用者目錄下新建乙個.ssh目錄,並將其目錄許可權改為700(僅使用者自身有讀寫操作許可權):

# mkdir .ssh

# chmod 700 .ssh

2. 將私鑰id_rsa拷貝到.ssh目錄下,檢查檔案許可權是否為600,如果不是,需要更改檔案許可權為600

# mv  id_rsa  ./.ssh

# chmod 600 id_rsa

3. 這時即設定完畢,輸入ssh命令,即可直接連線到伺服器,無需輸入使用者名稱密碼

# ssh 伺服器ip

4. 如果需要從客戶端通過金鑰認證的方式登入不同的伺服器,私鑰的名稱不能都是用id_rsa,這是可以在.ssh目錄下建立乙個config檔案來進行區分,config檔案許可權同樣設為600

# touch config

# chmod 600 config

5. 為config檔案新增內容如下:

host xx.xx.xx.xx                //設定伺服器ip

hostname xx.xx.xx.xx           //設定伺服器名稱

port 22                       //設定埠

user root                    //設定登入使用者

identityfile ~/.ssh/id_rsa  //設定私鑰路徑

這樣,使用者可以將私鑰id_rsa改為與config檔案中irs_file同名的檔名,就可以匹配登入伺服器了。

ssh與伺服器安全實戰

修改ssh的預設埠 禁止root登入 禁止用密碼登入,只能被信任的機器,用公私鑰登入 root localhost ls root ssh authorized keys chaoge1 id rsa.pub authorized keys.bak id rsa known hosts root l...

linux伺服器安全

一 系統安全記錄檔案 作業系統內部的記錄檔案是檢測是否有網路入侵的重要線索。如果您的系統是直接連到internet,您發現有很多人對您的系統做telnet ftp登入嘗試,可以執行 more var log secure grep refused 來檢查系統所受到的攻擊,以便採取相應的對策,如使用s...

Linux伺服器安全教程

一 系統安全記錄檔案 作業系統內部的記錄檔案是檢測是否有網路入侵的重要線索。如果您的系統是直接連到internet,您發現有很多人對您的系統做telnet ftp登入嘗試,可以執行 more var log secure grep refused 來檢查系統所受到的攻擊,以便採取相應的對策,如使用s...