網絡shell效應RSH比SSh要長。但是SSH在其功能中添加了強大的加密功能和數據壓縮功能,並且大多數現代SSH實現在同一包內提供SFTP和SCP,它們用於網絡中的安全文件傳輸。
最流行最普遍的SSH實現以OpenSSH的形式出現,它是由OpenBSD社團構思和維護的項目。OpenSSH被導入每一個操作系統平台,包括微軟的Windows,雖然在Window環境中它最廣泛的應用是:做為基於Unix系統上的OpenSSH服務器的客戶端。這些基於Unix系統包括:Linux、Solaris和OpenBSD。
SSH的職責
SSH 使用強大的加密功能保護遠程會議不被懷有惡意的黑客攻擊。從始至終都提供端到端的安全保障,包括客戶機與主機進行聯系,以及在電腦之間傳輸用戶名和口令之前建立會議專用的密碼鍵交換。它可以使用多種不同的密碼方案:AES、3DES、Blowfish以及其它方案。受信任的主機鑒定方案和系統之間鍵值交換提高安全性,OpenSSH不需要安全證書或優先鍵交換即可創建安全加密的遠程會議。
另外,使用SSH可以解決某些類型的網絡擁塞,明顯加速網絡,因為它在傳輸數據前先對數據進行了壓縮。它通過SFTP加密,能提供類似於FTP的交互式文件傳輸能力,所以,甚至口令和用戶名在網絡上傳輸都沒有阻礙。對於文件傳輸操作,SCP也類似地提供安全而方便的途徑完成此項工作——加密的文件拷貝命令,此命令操作網絡連接,它是SSH實現的一部份。
SSH是加密交流中眾所周知的網絡協議。開發它是為了取代RSH效用,RSH也加了密,但是不夠安全。SSH不僅繼承了RSH的功能,而且擴展加強了其功能,特別是安全性方面。
Linux的OpenSSH
Linux上安裝OpenSSH是很容易的。例如,在Debian GNU/Linux系統上,安裝OpenSSH時,做為根用戶登錄,然後輸入命令apt-get install ssh即可。類似地,在Fedora Core Linux系統上,安裝OpenSSH時,做為根用戶登錄,然後輸入命令yum install ssh即可。你甚至不需要做這些事情,因為在Debian 和Fedora Core中,它們默認安裝配置中已經包含了OpenSSH。對於Linux系統來說,如果要確定系統是是否已經安裝了OoenSSH,只需要輸入命令: ssh。如果系統中安裝了OpenSSH,則會給出簡單的使用指南信息(Listing A):
Listing A
$ ssh
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D port] [-e escape_char] [-F configfile]
[-iidentity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[user@]hostname [command]
在OpenSSH說明書上有更完整的使用信息。這個說明書是傳統UNIX文件手冊系統的一部分,並且在命令行模式下輸入man ssh命令,即可訪問OpenSSH說明書。說明書提供了OpenSSH客戶端命令行選項的信息,關聯的配置文件信息、當前版本已知的Bug信息,影響其操作的shell環境變量信息,以及相關說明列表。正如列表所示,上面有sshd的說明書,有ssh-agent的說明書,以及OpenSSH工具集裡其他應用的說明書。
配置並使用Linux 客戶端
在OpenSSH客戶端上,從命令行訪問OpenSSH服務器上的其他系統時,僅僅只需要輸入ssh host命令,這裡“host”是目標系統的主機名。有時候這個主機名不能被解析成IP地址,因為你沒有那個系統的DNS,並且它沒有在本地系統的/etc/hosts文件中列出來。此時有必要指定目標系統的IP地址而不是主機名,例如:輸入ssh 192.168.0.1命令,連接此IP表示的系統。更多的SSH命令如下:
SSH一般使用端口22。如果SSH服務器偵聽一個不標准端口,使用下面命令,示例端口號為1234:
ssh -p 1234 host
除非指定了用戶名,否則它將試圖登錄到一個遠程系統,此時用戶名與本地系統上的用戶名相同。可以使用命令選項指定不同的用戶名。下面給出了一般格式,“user”表示用戶名。
ssh -l user host
一個更普遍的指定用戶名的方法是使用下面的格式:
ssh user@host
通過SSH而不需要打開shell界面即可以在目標系統上執行命令。下面例子中的“command”表示想要執行的命令:
ssh host command
可以在目標系統上指定當前工作路徑。在下面的示例中,指定了/home/user為當前工作路徑:
ssh host:/home/user
可以將上面的多個選項組合到一塊,形成更復雜的定制操作:
ssh -p 1234 user@host:/home/user
ssh -l user host command
OpenSSH配置文件位於路徑/etc/ssh下。OpenSSH客戶端主要的配置文件在/etc/ssh/ssh_config路徑下,大多數版本都包含足夠的解釋信息,告訴你怎麼使用配置文件。對於有廣泛而復雜的說明書系統的版本,例如Debian,可以使用man ssh_config命令,獲得足夠多的OpenSSH客戶端配置信息。
對於安全性而言,一個普遍而重要的配置選項是ForwardX11,它應該被設置成“NO”,從而阻止SSH客戶端向網絡自動發送X Windows系統信息,甚至在通過SSH連接而沒有使用X Windows時,也是一樣。使用這個設置,可以指定特定的SSH連接,通過使用- X命令選項,傳送X Windows系統信息。在etc/ssh/ssh_config文件中其它配置選項也能執行和服從安全政策,並且可以服務於特殊的安全需要。
基Windows的SSH客戶端
微軟的Window系統有很多SSH客戶端程序,有些是私人的、商業的應用程序,有些是免費軟件或共享軟件,還有一些是開源軟件,例如:OpenSSH。存在命令行客戶端程序時,它們之中有些程序被安裝成為類似UNIX shell的一部分,現在最常用SSH的圖形用戶界面程序。它們之中,WinSCP用於SCP和SFTP性能,PuTTY用於SSHshell性能。通過閱讀上述的關於Linux的OpenSSH使用信息,則很容易了解WinSCP和PuTTY的用戶界面和它們的配置。還可以獲得稱為OpenSSH for Windows微軟Windows OpenSSH的實際端口。
配置並使用Linux服務器
一般地,OpenSSH服務器運行Liunx系統。它可以在Debian GNU/Linux系統中通過/etc/init.d/ssh命令進行重啟。相似地,在啟動和停止時,只需要將“restart”置換成“start”“stop”即可。Fedora Core Linux系統使用相同的命令格式,但是需要將/etc/init.d/ssh中的“ssh”置換成“sshd”。
與OpenSSH客戶端配置文件相似,OpenSSH服務器配置可以通過/etc/ssh/sshd_config文件完成。它的格式與/etc/ssh/ssh_config非常相似,但是其選項有很多不同。配置細節可以通過輸入man sshd_config命令查看。
一般將UsePrivilegeSeparation和IgnoreRhosts選項設置成“YES”,而將PermitRootLogin和PermitEmptyPasswords選項設置成“NO”。與OpenSSH客戶端一樣,使用SSH傳輸X Windows系統信息的風險非常低,如果沒有必要,對任何系統它都應該是不活動的。這樣,通常將X11Forwarding設置成“NO”。
在Linux上,它們通常有相當具有安全意識的人進行維護,這些配置選項應該進行恰當配置。一般應該包括PermitRootLogin和X11Forwarding配置選項。
使用OpenSSH
OpenSSH還有另外功能。例如:其他網絡協議可以在OpenSSH協議上“打隧道”,從而提供更高的安全性,這已在本文中有所提示。ssh-agent工具可以簡化OpenSSH客戶端的管理和使用。還有一些不相關的工具,包括SSH隧道支持,例如:Subversion版本控制系統。它的潛能是無窮盡的,不可能找到它們的終點。
使用多台電腦的Linux新用戶,可能不會一下子了解SSH的價值。他們都習慣於微軟的Windows操作, Windows上的界面已經優化好了,在某種程度上,反而不易於進行遠程管理。即算有服務器管理和遠程技術支持,使用諸如Windows Remote Desktop和Terminal Services for Windows等遠程管理工具,其有效性也相當有限,並且不鼓勵通過網絡直接使用Windows資源。
相反,Linux用戶在單個系統上運行他們的日常程序,並且在電腦上經過簡單安裝就能通過SSH訪問這些程序。很多 Linux管理員將坐在一台電腦前面,完成不在同一個地方的多台電腦上的工作,包括email、寫作、編程,這不是一兩個網絡應用程序。對SSH的性能越熟悉,則其用處越大,同時也越信任它。但是從Windows中走出來的Linux用戶還不能立即感受到SSH推動生產力的能力。
OpenSSH的配置和使用是值得學習的,即使你現在不能立即看出其作用,假以時日,你會離不開它的。