[TOC]
# 什么是SSH?
簡單說,SSH是一種網絡協議,用于計算機之間的加密登錄。如果一個用戶從本地計算機,使用SSH協議登錄另一臺遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。**1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準配置**。
SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。本文針對的實現是OpenSSH,它是自由軟件,應用非常廣泛。這里只討論SSH在Linux Shell中的用法。如果要在Windows系統中使用SSH,會用到另一種軟件PuTTY,這需要另文介紹。
# 中間人攻擊
SSH之所以能夠保證安全,原因在于它采用了公鑰加密。
整個過程是這樣的:
(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。
(2)用戶使用這個公鑰,將登錄密碼加密后,發送回來。
(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
這個過程本身是安全的,但是實施的時候存在一個風險:如果有人截獲了登錄請求,然后冒充遠程主機,將偽造的公鑰發給用戶,那么用戶很難辨別真偽。**因為不像https協議,SSH協議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發的**。
可以設想,如果攻擊者插在用戶與遠程主機之間(比如在公共的wifi區域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么SSH的安全機制就蕩然無存了。**這種風險就是著名的"中間人攻擊"(Man-in-the-middle attack,MITM)**。
#
[ssh用法及命令](http://blog.csdn.net/pipisorry/article/details/52269785)