一、IP/TCP協議的不安全性
TCP/IP協議有以明文傳輸、無法驗證通訊方身份等特點因此是不安全的通訊協議。是可以被竊聽的,竊聽者可以通過解析傳輸的內容,或者仿造為通訊方等方式來截取什么篡改通訊信息,因此如果通信過程被截取,那么這個通訊過程就暴露了出來。
使用TCP/IP協議我們無法辨別信息的安全性,因為明文傳輸的特點導致了,我們傳輸的信息可以被竊聽者解析,甚至篡改。
可能有人會說我們在通訊過程中設置一個密碼不就好了嘛,或者用一個加密算法加密一下。當前可以,但是問題是這個密碼或者加密算法怎么通知對方呢?因為你在使用TCP/IP協議傳輸的過程中,信息就有可能已經被竊聽者聽到了,所以你設密碼的事情,竊聽者也知道。難道我們要使用面對面通知對方,或者用電話的方式通知?當然沒有必要,因此SSH應運而生。
二、什么是SSH協議
SSH是建立在應用層上的安全協議,采用的RSA 算法,RSA算法是一種非對稱加密算法。什么是非對稱的?
加密與解密使用的密鑰不是同一密鑰,對中一個對外公開,稱為公鑰,另一個只有所有者知道,稱為私鑰。用公鑰加密的信息只有私鑰才能解開,反之,用私鑰加密的信息只有公鑰才能解開(簽名驗簽)。
舉個例子:A制作了一個盒子,並上了把鎖,只有他自己有鑰匙。然后他把盒子和鎖送給了B,然后B把東西放在盒子里面鎖上了,然后還給了A,那么現在A就可以用鑰匙打開鎖,拿出里面的東西。
作為竊聽者的C雖然在A給B盒子和鎖的過程中也獲得了盒子和鎖,但是他不知道鑰匙是怎么做的,因此在B給A還盒子的過程中他無法打開盒子。因此不能看里面的東西。
實際上SSH也是這種原理,SSH協議會產生兩個密匙,一個公鑰,一個私鑰。他的公鑰只能由他的私鑰打開。他將公鑰發送給了別人,而私鑰自己持有,當進行通訊的時候,對方通訊的信息包含在其持有的公鑰之中傳遞過來,然后由自己的私鑰進行解開。查看其中的內容,如果再傳遞過程中發生了劫持,那么由於劫持方沒有私鑰,無法解密信息的內容。因此無法查看其信息。
三、什么是SSH工作流程
我們介紹一下他的工作流程
- 客戶端向服務器端發出連接請求
- 服務器端向客戶端發出自己的公鑰
- 客戶端使用服務器端的公鑰加密通訊密鑰然后發給服務器端
- 如果通訊過程被截獲,由於竊聽者即使獲知公鑰和經過公鑰加密的內容,但不擁有私鑰依然無法解密(RSA算法)
- 服務器端接收到密文后,用私鑰解密,獲知通訊密鑰
四、在linux上安裝SSH
在linux最小化安裝等安裝模式下,linux是沒有ssh命令的,我們需要安裝他,可以使用root用戶執行下面命令安裝並啟動SSH
[root@tiny01 ~]# yum -y install openssh openssh-clients openssh-server
[root@tiny01 ~]# # 啟動SSH
[root@tiny01 ~]# /etc/init.d/sshd start
[root@tiny01 ~]# # 設置SSH自啟
[root@tiny01 ~]# chkconfig --level 235 sshd on
五、參考資料
RSA ~ 非對稱加密算法
