1.什么是SSH
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如:ftp、POP和telnet在本質(zhì)上都是不安全的,因為它們在網(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式,就是“中間人”冒充真正的服務(wù)器接收你傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被“中間人”一轉(zhuǎn)手做了手腳之后,就會出現(xiàn)很嚴(yán)重的問題。
從前,一個名為Tatu Yl?nen的芬蘭程序員開發(fā)了一種網(wǎng)絡(luò)協(xié)議和服務(wù)軟件,稱為SSH(Secure SHell的縮寫)。 通過使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣“中間人”這種攻擊方式就不可能實現(xiàn)了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣取SH有很多功能,雖然許多人把Secure Shell僅當(dāng)作Telnet的替代物,但你可以使用它來保護(hù)你的網(wǎng)絡(luò)連接的安全。你可以通過本地或遠(yuǎn)程系統(tǒng)上的Secure Shell轉(zhuǎn)發(fā)其他網(wǎng)絡(luò)通信,如POP、X、PPP和FTP。你還可以轉(zhuǎn)發(fā)其他類型的網(wǎng)絡(luò)通信,包括CVS和任意其他的TCP通信。另外,你可以使用帶TCP包裝的Secure Shell,以加強(qiáng)連接的安全性。除此之外,Secure Shell還有一些其他的方便的功能,可用于諸如Oracle之類的應(yīng)用,也可以將它用于遠(yuǎn)程備份和像SecurID卡一樣的附加認(rèn)證。
2.SSH的工作機(jī)制
SSH分為兩部分:客戶端部分和服務(wù)端部分。
服務(wù)端是一個守護(hù)進(jìn)程(demon),他在后臺運(yùn)行并響應(yīng)來自客戶端的連接請求。服務(wù)端一般是sshd進(jìn)程,提供了對遠(yuǎn)程連接的處理,一般包括公共密鑰認(rèn)證、密鑰交換、對稱密鑰加密和非安全連接。
客戶端包含ssh程序以及像scp(遠(yuǎn)程拷貝)、slogin(遠(yuǎn)程登陸)、sftp(安全文件傳輸)等其他的應(yīng)用程序。
他們的工作機(jī)制大致是本地的客戶端發(fā)送一個連接請求到遠(yuǎn)程的服務(wù)端,服務(wù)端檢查申請的包和IP地址再發(fā)送密鑰給SSH的客戶端,本地再將密鑰發(fā)回給服務(wù)端,自此連接建立。剛才所講的只是SSH連接的大致過程,SSH 1.x和SSH 2.x在連接協(xié)議上還有著一些差異。
SSH被設(shè)計成為工作于自己的基礎(chǔ)之上而不利用超級服務(wù)器(inetd),雖然可以通過inetd上的tcpd來運(yùn)行SSH進(jìn)程,但是這完全沒有必要。啟動SSH服務(wù)器后,sshd運(yùn)行起來并在默認(rèn)的22端口進(jìn)行監(jiān)聽(你可以用 # ps -waux | grep sshd 來查看sshd是否已經(jīng)被正確的運(yùn)行了)如果不是通過inetd啟動的SSH,那么SSH就將一直等待連接請求。當(dāng)請求到來的時候SSH守護(hù)進(jìn)程會產(chǎn)生一個子進(jìn)程,該子進(jìn)程進(jìn)行這次的連接處理。
但是因為受版權(quán)和加密算法的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,
SSH是由客戶端和服務(wù)端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務(wù)程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。
3.安裝使用OpenSSH
這里主要講的是基于FreeBSD的OpenSSH的配置,其它Unix及派生系統(tǒng)使用OpenSSH的方法大致相同F(xiàn)reeBSD中集成了OpenSSH,在很多Linux的發(fā)行版中都沒有包括OpenSSH。但是,可以從網(wǎng)絡(luò)上下載并安裝OpenSSH,他是完全免費的。(可以訪問OpenSSH的主頁 http://www.openssh.org)
生成密鑰對
使用ssh-keygen來生成密鑰對,比如要用DSA加密算法生成一個4096Bit的密鑰對可以輸入如下命令(具體參數(shù)請參閱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): |
| (密鑰對將要存的路徑,括號內(nèi)為默認(rèn)) 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 |
密鑰分發(fā)
剛才生成了一對密鑰,把私鑰放在自己的機(jī)器上的~/.ssh/目錄下并保證訪問權(quán)限是“-rw-------”(即600)。再把生成的公鑰放在要連接的遠(yuǎn)程主機(jī)的~/.ssh/目錄下并改名為authorized_keys,并且保證文件除了屬主外沒有被人修改的權(quán)限。
4.配置使用SSH
配置服務(wù)端
啟動SSH服務(wù)端很簡單只需要運(yùn)行| # sshd |
就可以了。或者在/etc/rc.conf中加入
sshd_enable="YES"
就可以在每次啟動時自動運(yùn)行SSH服務(wù)端了。
SSH服務(wù)端的配置使用的配置文件是“/etc/ssh/sshd_config”,并且OpenSSH1.x和2.x的服務(wù)器配置文件均為此文件。
配置客戶端
客戶端想連接遠(yuǎn)程服務(wù)器只需要輸入
#ssh 域名(或ip)
就可以了
| # ssh 192.168.0.6 -l fdy84 |
5.使用Windows下的SecureCRT進(jìn)行SSH連接
如果在Windows下想要通過SSH遠(yuǎn)程管理服務(wù)器怎么辦?其實Windows有很多遠(yuǎn)程管理軟件,我們在這主要介紹一下SecureCRT中SSH連接的使用。(以Version 4.1.1為準(zhǔn)介紹)
Create Public Key...
SecureCRT也可以生成密鑰對,不過SecureCRT最大只支持2048Bit的密鑰,點選Tools->Create Public Key...,選擇密鑰算法和密鑰長度,輸入完口令后再使勁晃鼠標(biāo)以給它生成密鑰的足夠的隨機(jī)量之后就等待計算機(jī)生成密鑰對,如圖

點選左上角的Connect按鈕
,開啟Connect對話框

再點擊紅圈所示的New Session按鈕進(jìn)入Session Options對話框

在這里我們選擇SSH連接,并填入要連接的主機(jī)名稱(或者ip地址),用戶名,再選擇基于公鑰方式的認(rèn)證,點擊Properties...進(jìn)入密鑰配置對話框

在紅色圈所示的位置填入你的私鑰文件。
現(xiàn)在點擊剛才建立的那個連接進(jìn)行SSH連接,根據(jù)提示點擊幾個對話框之后就連接上遠(yuǎn)程的服務(wù)器了,如圖

雖然SSH提供基于密碼的登陸,不過基于安全考慮筆者并不推薦使用這種登陸,鑒于現(xiàn)在機(jī)器的速度普遍已經(jīng)很快,推薦使用4096位的密鑰以加強(qiáng)安全性。
以上是關(guān)于SSH的一些簡單的介紹以及使用OpenSSH和進(jìn)行連接的一些方法,由于本人能力有限文章中難免有些錯誤,希望感興趣的讀者能夠指出并與我聯(lián)系
Email:fdy84@sina.com
fdy84@frontfree.net


