天天看點

Telnet SSH1 SSH2 簡介

本文整理自網絡:

之前都是通過secureCRT直接telnet到遠端主機來完成工作的,雖然也發現連接配接設定中的協定有諸多選項(SSH1、SSH2、Telnet、Telnet/SSL等)可以使用,但并沒有關注過。後來在黑龍江分支辦公因為協定選擇錯誤造成無論如何也無法連接配接遠端主機,郁悶許久,于是決定總結一下。

Telnet簡介:

Telnet協定是TCP/IP協定族中的一員,是Internet遠端登陸服務的标準協定和主要方式。預設端口23.。它為使用者提供了在本地計算機上完成遠端主機工作的能力。在終端使用者的電腦上使用telnet程式,用它連接配接到伺服器。終端使用者可以在telnet程式中輸入指令,這些指令會在伺服器上運作,就像直接在伺服器的控制台上輸入一樣。可以在本地就能控制伺服器。

傳統telnet聯機會話所傳輸的資料并未加密,這代表所輸入及顯示的資料,包括賬号名稱及密碼等隐密資料都是明文傳送的,很可能會遭其它人竊聽。

SSH簡介

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡工作小組(Network Working Group)所制定;SSH 為建立在應用層和傳輸層基礎上的安全協定。SSH 是目前較可靠,專為遠端登入會話和其它網絡服務提供安全性的協定。利用 SSH 協定可以有效防止遠端管理過程中的資訊洩露問題。

==============================

網絡被攻擊,很多情況是由于伺服器提供了Telnet服務引起的。的确,對于UNIX系統,如果要遠端管理它,必定要使用遠端終端,而要使用遠端終端,自然要在伺服器上啟動Telnet服務。但是Telnet服務有一個緻命的弱點——它以明文的方式傳輸使用者名及密碼,是以,很容易被别有用心的人竊取密碼。目前,一種有效代替Telnet服務的有用工具就是SSH服務。SSH用戶端與伺服器端通訊時,使用者名及密碼均進行了加密,有效防止了對密碼的竊聽。本文向大家介紹運作在常用作業系統上的SSH伺服器軟體包的使用。

首先,SSH軟體包由兩部分組成,一部分是伺服器端軟體包,另一部分是客戶軟體包。針對UNIX、Linux系統,這兩個軟體包是分開打包在兩個不同的檔案中的。在Windows 9x/NT/2000中,也分為兩部分,不同之處在于,伺服器軟體包隻能運作在Windows NT及Windows 2000 Server以上的版本中,而用戶端SSH可以運作在所有的Windows系統中。此外,SSH還分為SSH1及SSH2兩個版本,SSH1是一個完全免費的軟體包,而SSH2在商業使用時則要付費。由其命名也可知SSH1是第一版,它的功能沒有SSH2強大,但是,由于它是免費的,是以廣泛地使用在很多網站中。SSH2中加入了很多功能,并且相容SSH1伺服器,可以對SSH1的用戶端提供很好的服務支援。是以,如果你的系統中安裝了SSH2,那就沒有必要再安裝SSH1軟體包了。

SSH的安全驗證是如何工作的 

從用戶端來看,SSH提供兩種級别的安全驗證。 

第一種級别(基于密碼的安全驗證)隻要你知道自己帳号和密碼,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連接配接的伺服器就是你想連接配接的伺服器。可能會有别的伺服器在冒充真正的伺服器,也就是受到“中間人”這種方式的攻擊。 

第二種級别(基于密匙的安全驗證)需要依靠密匙,也就是你必須為自己建立一對密匙,并把公用密匙放在需要通路的伺服器上。如果你要連接配接到SSH伺服器上,用戶端軟體就會向伺服器送出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在你在該伺服器的家目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一緻,伺服器就用公用密匙加密“質詢”(challenge)并把它發送給用戶端軟體。用戶端軟體收到“質詢”之後就可以用你的私人密匙解密再把它發送給伺服器。 

用這種方式,你必須知道自己密匙的密碼。但是,與第一種級别相比,第二種級别不需要在網絡上傳送密碼。 

第二種級别不僅加密所有傳送的資料,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒。 

安裝并測試OpenSSH 

因為受到美國法律的限制,在很多Linux的發行版中都沒有包括OpenSSH。但是,可以從網絡上下載下傳并安裝OpenSSH(有關OpenSSH的安裝和配置請參考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。 

安裝完OpenSSH之後,用下面指令測試一下: 

ssh -l [your accountname on the remote host] [address of the remote host] 

如果OpenSSH工作正常,你會看到下面的提示資訊: 

The authenticity of host [hostname] can't be established. 

Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52. 

Are you sure you want to continue connecting (yes/no)? 

OpenSSH告訴你它不知道這台主機,但是你不用擔心這個問題,因為你是第一次登入這台主機。鍵入“yes”。這将把這台主機的“識别标記”加到“~/.ssh/know_hosts”檔案中。第二次通路這台主機的時候就不會再顯示這條提示資訊了。 

然後,SSH提示你輸入遠端主機上你的帳号的密碼。輸入完密碼之後,就建立了SSH連接配接,這之後就可以象使用telnet那樣使用SSH了。 

UNIX/Linux下SSH2安裝步驟

1.下載下傳軟體包,下載下傳位址www.ssh.com,下載下傳最新軟體包SSH2,最好下載下傳源程式軟體包自己進行自行編譯。

2.解壓及安裝:

# tar -zxvf ssh2-2.4.0.tar.gz

# cd ssh2-2.4.0

# ./configure

# make

#make install

安裝完成。這一過程實際上将伺服器軟體包及用戶端軟體一起安裝了,不必再次安裝用戶端軟體包。

已編譯好的二進制軟體包以rpm格式存放在ftp://ftp.ssh.com/pub/ssh/rpm目錄下。它是一個給非商業使用者使用的軟體包,軟體包名稱為:ssh-2.4.0-1.i386.rpm,其中包含了對X Window的支援,另一個不支援X Window的軟體包為ssh-2.4.0-1nox.i386.rpm,下載下傳後可以直接安裝。安裝程式将SSH2軟體包安裝在/usr/local/bin及/usr/local/sbin下。

Windows NT上安裝SSH

在NT及Windows 2000 Server環境下,可選擇的伺服器軟體有:Vshell、ssh2-2.4.0.win-server。Vshell是由Van Dyke提供的一個可以在Windows NT/2000環境下提供SSH2伺服器的軟體包,其下載下傳位址如下:http://www.vandyke.com/download/index.html。另一個運作在Windows環境下的SSH伺服器是SSHWinServer.exe,可以直接從ftp://ftp.ssh.com/pub/ssh目錄下下載下傳。

Windows環境下的安裝十分簡單,本文不再多介紹。

與UNIX不同,在Windows環境下,需要分别安裝伺服器及用戶端軟體包。運作在Windows環境下的用戶端軟體,也可以從以上兩個站點下載下傳得到,檔案名分别為SecureCRT及SSHWin-2.4.0-pl2。

關于密鑰的準備工作

A.伺服器端産生使用者的自己的加密密鑰及對外公開使用的公鑰。在UNIX環境下,産生密鑰的方法如下:

-keygen

要求使用者輸入一個長的認證字串,這個字串的功能同password相當,但是,它更長,一般是在20個字元以内。再次輸入相同的字串以确認輸入的正确,之後,系統産生一對密鑰及公鑰。将公鑰複制到本地,以便用戶端對伺服器發送的資訊進行解密用。當然,如果你不複制,在第一次登入時,伺服器會将它的公鑰自動推給客戶機,以便客戶機能對伺服器提供的資訊進行解密識别。

B.用戶端産生使用者的加密密鑰及公鑰。用戶端産生自己的密鑰及公鑰的方法與伺服器端相同。而Windows環境下的一些支援SSH的用戶端軟體都采用自己生成的方法,具體情況各不相同,但是可以肯定的是所有的支援SSH的用戶端都可以而且必須産生。以sshWin2.4為例說明如下:

打開選單:Edit→Settings→Globe settings→User keys→Generate New keypairs,按照提示會自動産生新的密鑰及公鑰對。

最後,将客戶機産生的公鑰複制到服務端的主機上使用者的目錄中(在UNIX下應為/home/usrname/.ssh2目錄中)。不同的版本的SSH對公鑰及密鑰的檔案名有特定的要求,具體情況請閱讀軟體包中的安裝說明。

啟動SSH伺服器

在UNIX/Linux環境下,伺服器程式放置在/usr/local/sbin目錄下,啟動方法如下:

# sshd

# ps x

可以看到SSHD已經啟動了。如果不希望每次重新開機動系統,都要手工運作啟動SSHD,則可以自己寫一個腳本,放置在init.d目錄下,讓系統啟動後,自動執行SSHD服務的啟動工作。或者直接在rc.local中加入一行/usr/local/sbin/sshd也可。Windows NT/2000/下啟動SSH2 Server,運作程式組中的start SSH2 Server即可。

使用SSH

用戶端在UNIX/Linux系統中就是SSH,存放在/usr/local/bin目錄下。其中有SSH1、SSH2、scp等用戶端工具,使用SSH登入遠端主機方法如下:

host.ip.of.remote

如同使用Telnet一樣,不同之處是要求使用者輸入認證字串,如果認證字串通過了認證,則使用者直接登入成功;如果不成功,則是要求使用者輸入系統密碼。密碼認證成功後,使用者也可以成功登入系統。從使用上看,與Telnet沒有什麼不同之處。而且有了SSH用戶端軟體,如果你要上傳檔案,不必向以前一樣再開一個FTP視窗,再次認證,然後上傳檔案。使用SSH用戶端自帶的scp工具,就可以直接将檔案上傳到遠端伺服器上。使用方法如下:

host1:dir/filename host2:/home/abc/filename

在Windows系統中,可供使用的SSH用戶端有:SecurCRT,也即CRT的支援SSH的版本(下載下傳位址:http://www.vandyke.com/),這是一個很好的支援SSH的遠端終端,它同時支援SSH1及SSH2。使用者可以根據伺服器端自由選擇,讓它支援相應的标準。

另一個可供選擇的是ssh.com提供的用戶端,下載下傳位址:ftp://ftp.ssh.com/pub/ssh/SSHWin-2.4.0-pl2.exe,這是新版本的SSH2用戶端。

另外,還有支援SSH的FTP用戶端工具,其中sshwin-2.4中就有一個SSH Secure File Transfer Client,它可以用來在兩個主機之間傳輸加密後的檔案。也即scp的功能。配合SecureCRT的也有一個相應的支援SSH的FTP工具,其名稱為:SecureFX,可以從www.vandyke.com/下載下傳使用。

由于種種原因,一些支援SSH的GUI用戶端不一定會很好地支援以上各個伺服器,大家可以自行組合以上工具,找到适合自己的工具。一般來說,在UNIX下的用戶端對各種伺服器的支援是最好的。通常在選擇伺服器及用戶端軟體時,最好選擇同一軟體商的産品,這樣不會出現不相容的問題。

需要補充的是,如果你既想使用SSH2又不想付費,那麼一個可供選擇的自由軟體是Openssh,它是一個遵守GPL協定的軟體包,同時支援SSH1及SSH2标準,是另一個被廣泛使用的SSH軟體包(可以從www.openssh.com下載下傳)。Openssh的最新版本為Openssh-2.5.1,提供全部源碼。不過,在編譯前,應仔細閱讀其說明檔案。編譯過程中要用到zlib及openssl兩個軟體包,使用者首先需要下載下傳并安裝它們,之後再編譯openssh。具體過程請閱讀軟體包中的install檔案。 

繼續閱讀