問題:
1 spawn ssh root@91.213.222.197 -p 26002 # 用戶名、IP地址、端口號 2 ssh_exchange_identification: read: Connection reset by peer
解決方案:
1 ssh -v user@server
即:
ssh -v root@91.213.222.197 -p 26002
附錄(僅針對SSH在Linux Shell中的用法)
一、什么是SSH?
Secure Shell(安全外殼協議,簡稱SSH)是一種加密的網絡傳輸協議,可在不安全的網絡中為網絡服務提供安全的傳輸環境。SSH最常見的用途是遠程登錄系統。SSH既有商業實現,也有開源實現。
SSH以非對稱加密實現身份驗證。身份驗證有多種途徑,其中一種方法是使用自動生成的公鑰-私鑰對來簡單地加密網絡連接,隨后使用密碼認證進行登錄;另一種方法是人工生成一對公鑰和私鑰,通過生成的密鑰進行認證,這樣就可以在不輸入密碼的情況下登錄。任何人都可以自行生成密鑰。公鑰需要放在待訪問的電腦之中,而對應的私鑰需要由用戶自行保管。認證過程基於生成出來的私鑰,但整個認證過程私鑰本身中不會傳輸到網絡中。
SSH協議有兩個主要版本,分別是SSH-1和SSH-2。無論是哪個版本,核實未知密鑰來源都是重要的事情,因為SSH只驗證提供用戶是否擁有與公鑰相匹配的私鑰,只要接受公鑰而且密鑰匹配服務器就會服務器就會授予許可。這樣的話,一旦接受了惡意攻擊者,那么系統也把攻擊者視為合法用戶。
二、基本用法
SSH主要用於遠程登錄。假設用戶名user,登錄遠程主機host,如下所示。
1 ssh user@host
如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名。
ssh host
SSH的默認端口是22,也就是說,登錄請求會送進遠程登錄主機的22端口。使用p參數,可以修改端口。本文開頭已舉例。
三、中間人攻擊
SSH之所以能夠保證安全,原因在於它采用了公鑰加密。
整個過程是這樣的:1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶;2)用戶使用這個公鑰,將登錄密碼加密后,發送回來;3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
如果攻擊者插在用戶與遠程主機之間(比如在公共的Wi-Fi區域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么SSH的安全機制就盪然無存了。這就是著名的“中間人攻擊”(Man-in-the-middle attack)。