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