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登錄成功,界面如下: