超載
在局域網乃至互聯網上,主機與主機之間的通信都是非加密的狀態,屬于明文通信。所謂明文通信,就是任何登錄、操作信息,都未經加密處理,這就帶來了極大的不安全因素。在SSH出現之前,其實已經出現了一些協議,例如rlogin、Telnet、FT或者rsh之類的,但是它們的安全性遠遠不夠,這就催生了SSH(圖1)。
1995年第一個SSH程序出現,稱之為“secure shell”,它將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準配置。簡單說,SSH是一種網絡協議,用于計算機之間的加密登錄。除此之外,SSH也支持隧道協議、端口映射和X11連接。借助SFTP或SCP協議,SSH還可以傳輸文件。
SSH協議框架中最主要的部分是三個協議:
1、傳輸層協議(The Transport Layer Protocol):傳輸層協議提供服務器認證,數據機密性,信息完整性等的支持。
2、用戶認證協議(The User Authentication Protocol):用戶認證協議為服務器提供客戶端的身份鑒別。
3、連接協議(The Connection Protocol):連接協議將加密的信息隧道復用成若干個邏輯通道,提供給更高層的應用協議使用。

SSH最重要的功能當然是主機與主機之間的通訊,但最大的區別就在于通訊過程中的加密。所以,SSH的工作原理也有所區別:
(1)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。
(2)用戶使用這個公鑰,將登錄密碼加密后,發送回來。
(3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄(圖2)。
詳細解析它的工作原理,就是服務器啟動的時候自己產生一個密鑰(76 8 b i t公鑰),本地的S S H客戶端發送連接請求到S S H服務器,服務器檢查連接點客戶端發送的數據和I P地址,確認合法后發送密鑰( 76 8 b i ts)給客戶端,此時客戶端將本地私鑰(256bit)和服務器的公鑰(768bit)結合成密鑰對key(1024bit)并發回給服務器端,從而建立連接。在這種機制之下的連接通訊,讓SSH具備了高可靠性、高安全性(相對而言)。
具體來說,在使用S SH登錄工具時,S SH客戶端的登錄方式是這樣的(圖3):
ssh user@remote -p port
其中,“user”是你在遠程機器上的用戶名,如果不指定的話默認為當前用戶;“r emot e”則是遠程機器的地址,可以是I P 地址(局域網)、域名(局域網、廣域網);最后的“por t”是指SSH服務器端監聽端口,如果不指定的話就為默認值22(SSH協議專用端口)。這樣的登錄命令執行后,再依據提示確認公鑰、輸入私鑰就可以了(圖4)。

從安全性角度上看這樣的“雙保險”可以最大限度確保SSH的安全性連接,但是它也造成了不必要的麻煩——驗證公鑰,輸入私鑰這樣繁瑣的操作。其實,這些也可以通過SSH的客戶端軟件實現免密鑰登錄的。我們就以Windows平臺下的Putty(SSH登錄工具)舉例說明(圖5)。
除了打開putty的界面按照提示設置登錄SSH之外,我們還可以使用快捷方式的辦法來實現快捷登錄,方法是新建一個Putty的快捷方式,然后右鍵單擊該快捷方式,然后選擇“屬性”,在“目標”欄中我們添加“ -ssh -l root -P 22 123.123.123.123 -pw 456”。注意,首先這個參數添加時要在putty.exe后連接一個空格,其次,“22”為端口號,如果目標電腦的SSH為特殊指定的端口,那么這里也要進行相應修改;接下來是IP地址或域名,根據實際情況修改即可;最后就是密碼-pw后,輸入目標電腦的SSH密碼就行了(圖6)。
設置完畢點擊確定,并雙擊這個快捷方式,它便可以自動連接到指定好的目標主機SSH上,再確認保存一下公鑰,日后再使用就完全不需要輸入用戶名密碼了,非常方便。當然,這只是SSH最基本的登錄方法,具體要實現何種操作,則是根據你輸入的命令來決定的,有興趣的讀者不妨多多摸索。