詳解Linux中SSH遠端訪問控制

科技小先鋒發表於2017-11-10

SSH:是一種安全通道協議,主要用來實現字元介面的遠端登入,遠端複製等功能(使用TCP的22號埠)。SSH協議對通訊雙方的資料傳輸進行了加密處理,其中包括使用者登入時輸入的使用者口令。

在RHEL 5系統中使用的是OpenSSH伺服器由openssh,openssh-server等軟體包提供的(預設已經安裝),並以將sshd新增為標準的系統服務。

SSH提供一下兩種方式的登入驗證:

1、密碼驗證:以伺服器中本地系統使用者的登入名稱,密碼進行驗證。

2、祕鑰對驗證:要求提供相匹配的祕鑰資訊才能通過驗證。通常先在客戶機中建立一對祕鑰檔案(公鑰和私鑰),然後將公鑰檔案放到伺服器中的指定位置。

注意:當密碼驗證和私鑰驗證都啟用時,伺服器將優先使用祕鑰驗證。

SSH的配置檔案:

sshd服務的配置檔案預設在/etc/ssh/sshd_config,正確調整相關配置項,可以進一步提高sshd遠端登入的安全性。

配置檔案的內容可以分為以下三個部分:

1、常見SSH伺服器監聽的選項如下:

Port 22                    //監聽的埠為22

Protocol 2                //使用SSH V2協議

ListenAdderss 0.0.0.0    //監聽的地址為所有地址

UseDNS no                //禁止DNS反向解析

2、常見使用者登入控制選項如下:

PermitRootLogin no            //禁止root使用者登入

PermitEmptyPasswords no        //禁止空密碼使用者登入

LoginGraceTime 2m            //登入驗證時間為2分鐘

MaxAuthTries 6                //最大重試次數為6

AllowUsers user            //只允許user使用者登入,與DenyUsers選項相反

3、常見登入驗證方式如下:

PasswordAuthentication yes                //啟用密碼驗證

PubkeyAuthentication yes                    //啟用祕鑰驗證

AuthorsizedKeysFile .ssh/authorized_keys    //指定公鑰資料庫檔案


SSH客戶端命令程式ssh、scp、sftp

通過ssh命令可以遠端登入到sshd服務,為使用者提供一個安全的Shell環境,一遍對伺服器進行管理和維護。使用時指定登入使用者名稱,目標主機作為引數。如下:150721973.jpg

當使用者第一次登入SSH伺服器時,必須接受伺服器發來的RSA祕鑰(根據輸入yes)後才能繼續。接受的祕鑰資訊將儲存到“~/.ssh/known_hosts”檔案中。如果預設埠被更改,可以使用-p命令制定埠。

通過scp命令可以利用SSH安全連線與遠端主機互相複製檔案。使用scp命令時,除了必須制定複製源,目標以外,還應制定目標主機地址,登入使用者,執行後提示驗證口令等。如下:

複製某檔案到SSH伺服器上

151351270.jpg

下載SSH伺服器上的某個檔案到本地151517261.jpg

通過sftp命令可以利用SSH安全連線與遠端主機上傳,下載檔案,採用了與FTP類似的登入過程和互動式環境,便於目錄資源管理。如下:

使用sftp命令通過SSH安全連線登入遠端伺服器

151952383.jpg

如果客戶端是windows系統,那麼我們可以使用一些圖形化的工具來訪問Linux伺服器。常見的一些圖形化工具有PuTTY,WinSCP等工具,具體如何使用請各位自行研究。


下面我們來詳細講解如何構建祕鑰對驗證的SSH體系

如下圖所示:簡單描述了構建祕鑰對驗證的基本過程。

152740419.jpg

根據上圖所示,我們分四步來構建祕鑰對驗證的SSH。

1、在SSH客戶機建立使用者祕鑰對。

如下:為test使用者建立祕鑰對。

153257837.jpg

上圖命令中:-t用於指定演算法型別,rsa表示使用rsa演算法。

祕鑰短語用來對私鑰文進行保護,當使用私鑰驗證登陸時必須提供此處所設定的短語。

祕鑰對預設儲存在使用者宿主目錄下的.ssh/目錄下。

2、將公鑰上傳至SSH伺服器

將公鑰上傳至SSH伺服器的方式有很多,可以使用U盤拷貝,也可以使用ftp、共享等方式上傳。在此我們使用剛講過的scp命令上傳公鑰檔案。

154053624.jpg

3、在SSH伺服器中匯入公鑰文字

在伺服器中,目標使用者(用來遠端登入的使用者)的公鑰資料庫位於~/.ssh/目錄下,預設檔名是authorized_keys。如下:將test的公鑰檔案匯入到user使用者的公鑰資料庫中。

154535125.jpg

4、此時在客戶端就可以使用祕鑰對驗證了。

154735452.jpg

此時需要使用者輸入建立祕鑰對時輸入的祕鑰短語,而不需要知道使用者的密碼即可登入SSH伺服器。

本文轉自yun5277 51CTO部落格,原文連結:http://blog.51cto.com/dengqi/1260038,如需轉載請自行聯絡原作者


相關文章