Linux SSH
前言:
在實際的生產環境中,運維人員經常要使用本地的計算機對遠端主機進行控制工作,TCP/IP協議提供了兩種協議來完成這樣的操作,分別為Telnet協議和SSH協議。
由於Telnet本身的安全性缺陷(明文傳輸),當黑客捕捉到資料包後,就會洩露使用者名稱和密碼,已經逐漸在生產環境中被淘汰掉。
所以今天我們主要來探究SSH連線的兩種方式,並在虛擬機器進行實現。此外嘗試使用Python編寫基礎的SSH遠端控制程式。
SSH簡介:
什麼是SSH,SSH是用於客戶端和伺服器端的溝通。在伺服器上,SSH協議生成的軟體以守護程序的方式在後臺存在,當客戶端進行連結的時候對其進行響應。可以簡單的將SSH理解為連線客戶端和伺服器端的管道。
如何開啟和實現SSH通訊,是我們要研究的問題。
SSH認證方式:
當客戶端嘗試連線伺服器端的時候,伺服器會對其進行安全認證,從而獲取認證資訊。SSH提供了兩種認證方式,分別為基於口令的安全認證和基於金鑰的安全認證。
基於口令的安全認證:
基於口令的認證本質上還是'賬戶'+'密碼'的認證,當輸入了正確使用者資訊後,伺服器端通過了認證才可以接受控制請求。
基於金鑰的安全認證:
基於金鑰的認證使用了公私鑰來進行驗證。首先伺服器端和客戶端都配置使用了公鑰,而私鑰僅由客戶端儲存。當客戶端嘗試連線伺服器的時候,會首先將自己的公鑰傳送給伺服器端,當伺服器端對比客戶端與自己所儲存的公鑰一致後,會向客戶端傳送檢查資訊,這個檢查資訊需要客戶端使用私鑰進行解密,繼而應答伺服器的訊息進行確認驗證。
SSH連線實現:
前置條件:首先必須要有SSH連線的應用軟體,市面上比較典型的有Xshell、Finalshell、Bitvise.下載地址分別如下:
Finalshell:http://www.hostbuf.com/t/988.html
Bitvise:https://www.wmzhe.com/soft-19339.html
Xshell:https://www.xshellcn.com/
在本部落格中我使用的是Finalshell,因為其背景可以設定,相比其他兩款軟體無論是優化還是產品設計都更好一點,正常使用頁面如下。具體的Finalshell使用方法詳見官網。
現在我們來研究使用Kali-Linux兩種方法如何連線上SSH
①:基於口令認證的方式:
首先進入root許可權,使用vi修改/etc/ssh/sshd_config檔案,修改如下兩處
1|#PasswordAuthentication no
修改為:
PasswordAuthentication yes
2|PermitRootLogin without-password
修改為:
PermitRootLogin yes
儲存後退出vi.
然後在root許可權下,啟用SSH服務,命令如下
service ssh start
繼而設定開機SSH作為守護程序自啟動,命令如下:
update-rc.d ssh enable
此時通過SSH設定相應的IP地址,輸入使用者名稱與密碼即可SSH連線成功。
②:基於口令的認證方式
首先在root許可權下,開啟金鑰登入的功能,編輯/etc/ssh/sshd_config檔案進行如下修改
1|#PubkeyAuthentication no
修改為
PubkeyAuthentication yes
2|PermitRootLogin without-password
修改為:
PermitRootLogin yes
3|#AuthorizedKeysFile .ssh/authorized_keys
去除前面的#註釋符
然後設定金鑰對,命令與選擇如下,其中需要輸入內容的地方可以直接按下Enter留空:
ssh-keygen -t rsa -b 4096 -m PEM
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:nloGAzevmrE1XNIwzn37L1aQoreQe9ditfSynWYJURg root@kali
此時產生的公鑰和私鑰都存在/root/.ssh/目錄下,接下來我們需要在伺服器上安裝公鑰,命令如下
cd /root/.ssh/
cat id_rsa.pub >>authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh
然後將私鑰id_rsa下載到客戶端上
設定登入的連線方式是金鑰登入,設定使用者名稱為root,載入私鑰並輸入新增私鑰時設定的密碼,使用SSH登入連線,發現登入成功。
最終發現SSH登入成功,介面如下: