1.什么是SSH
傳統的網絡服務程序,如:ftp、POP和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式,就是“中間人”冒充真正的服務器接收你傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之后,就會出現很嚴重的問題。
從前,一個名為Tatu Yl?nen的芬蘭程序員開發了一種網絡協議和服務軟件,稱為SSH(Secure SHell的縮寫)。 通過使用SSH,你可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,雖然許多人把Secure Shell僅當作Telnet的替代物,但你可以使用它來保護你的網絡連接的安全。你可以通過本地或遠程系統上的Secure Shell轉發其他網絡通信,如POP、X、PPP和FTP。你還可以轉發其他類型的網絡通信,包括CVS和任意其他的TCP通信。另外,你可以使用帶TCP包裝的Secure Shell,以加強連接的安全性。除此之外,Secure Shell還有一些其他的方便的功能,可用于諸如Oracle之類的應用,也可以將它用于遠程備份和像SecurID卡一樣的附加認證。
2.SSH的工作機制
SSH分為兩部分:客戶端部分和服務端部分。
服務端是一個守護進程(demon),他在后臺運行并響應來自客戶端的連接請求。服務端一般是sshd進程,提供了對遠程連接的處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接。
客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全文件傳輸)等其他的應用程序。
他們的工作機制大致是本地的客戶端發送一個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發送密鑰給SSH的客戶端,本地再將密鑰發回給服務端,自此連接建立。剛才所講的只是SSH連接的大致過程,SSH 1.x和SSH 2.x在連接協議上還有著一些差異。
SSH被設計成為工作于自己的基礎之上而不利用超級服務器(inetd),雖然可以通過inetd上的tcpd來運行SSH進程,但是這完全沒有必要。啟動SSH服務器后,sshd運行起來并在默認的22端口進行監聽(你可以用 # ps -waux | grep sshd 來查看sshd是否已經被正確的運行了)如果不是通過inetd啟動的SSH,那么SSH就將一直等待連接請求。當請求到來的時候SSH守護進程會產生一個子進程,該子進程進行這次的連接處理。
但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,
SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。
3.安裝使用OpenSSH
這里主要講的是基于FreeBSD的OpenSSH的配置,其它Unix及派生系統使用OpenSSH的方法大致相同FreeBSD中集成了OpenSSH,在很多Linux的發行版中都沒有包括OpenSSH。但是,可以從網絡上下載并安裝OpenSSH,他是完全免費的。(可以訪問OpenSSH的主頁 http://www.openssh.org)
生成密鑰對
使用ssh-keygen來生成密鑰對,比如要用DSA加密算法生成一個4096Bit的密鑰對可以輸入如下命令(具體參數請參閱man ssh-keygen):
#ssh-keygen -b 4096 -t dsa |
%ssh-keygen -b 4096 -t dsa |
Generating public/private dsa key pair. Enter file in which to save the key (/home/fdy84/.ssh/id_dsa): |
(密鑰對將要存的路徑,括號內為默認) Created directory '/home/fdy84/.ssh'. Enter passphrase (empty for no passphrase): (輸入口令) Enter same passphrase again: (再次輸入口令,千萬不要忘記否則就只有從新生成密鑰了) Your identification has been saved in /home/fdy84/.ssh/id_dsa. (你的私鑰) Your public key has been saved in /home/fdy84/.ssh/id_dsa.pub. (你的公鑰) The key fingerprint is: bb:1b:f5:1c:77:62:90:21:59:7e:c6:65:e5:24:c6:e5 fdy84@freebsd |
密鑰分發
剛才生成了一對密鑰,把私鑰放在自己的機器上的~/.ssh/目錄下并保證訪問權限是“-rw-------”(即600)。再把生成的公鑰放在要連接的遠程主機的~/.ssh/目錄下并改名為authorized_keys,并且保證文件除了屬主外沒有被人修改的權限。
4.配置使用SSH
配置服務端
啟動SSH服務端很簡單只需要運行# sshd |
就可以了。或者在/etc/rc.conf中加入
sshd_enable="YES"
就可以在每次啟動時自動運行SSH服務端了。
SSH服務端的配置使用的配置文件是“/etc/ssh/sshd_config”,并且OpenSSH1.x和2.x的服務器配置文件均為此文件。
配置客戶端
客戶端想連接遠程服務器只需要輸入
#ssh 域名(或ip)
就可以了
# ssh 192.168.0.6 -l fdy84 |
5.使用Windows下的SecureCRT進行SSH連接
如果在Windows下想要通過SSH遠程管理服務器怎么辦?其實Windows有很多遠程管理軟件,我們在這主要介紹一下SecureCRT中SSH連接的使用。(以Version 4.1.1為準介紹)
Create Public Key...
SecureCRT也可以生成密鑰對,不過SecureCRT最大只支持2048Bit的密鑰,點選Tools->Create Public Key...,選擇密鑰算法和密鑰長度,輸入完口令后再使勁晃鼠標以給它生成密鑰的足夠的隨機量之后就等待計算機生成密鑰對,如圖
點選左上角的Connect按鈕,開啟Connect對話框
再點擊紅圈所示的New Session按鈕進入Session Options對話框
在這里我們選擇SSH連接,并填入要連接的主機名稱(或者ip地址),用戶名,再選擇基于公鑰方式的認證,點擊Properties...進入密鑰配置對話框
在紅色圈所示的位置填入你的私鑰文件。
現在點擊剛才建立的那個連接進行SSH連接,根據提示點擊幾個對話框之后就連接上遠程的服務器了,如圖
雖然SSH提供基于密碼的登陸,不過基于安全考慮筆者并不推薦使用這種登陸,鑒于現在機器的速度普遍已經很快,推薦使用4096位的密鑰以加強安全性。
以上是關于SSH的一些簡單的介紹以及使用OpenSSH和進行連接的一些方法,由于本人能力有限文章中難免有些錯誤,希望感興趣的讀者能夠指出并與我聯系
Email:fdy84@sina.com
fdy84@frontfree.net