孔祥真 徐小龍 邢宏健
曲阜師范大學計算機科學學院 山東 276826
最初SSH是由芬蘭的一家公司在1995年開發的,目前SSH協議已經經歷了SSH 1和SSH 2兩個版本,它們使用了不同的協議來實現,二者互不兼容。SSH 2不管在安全、功能上還是在性能上都比SSH 1有優勢,所以目前被廣泛使用的是 SSH2。但是因為受版權和加密算法的限制,后來很多系統都采用了OpenSSH。OpenSSH完全實現了SSH協議,而且開放代碼,移植性好,因此很快流行起來,自 2005年以來一直是SSH領域的主流軟件。
默認情況下 Red Hat Enterprise Linux安裝程序會將OpenSSH服務和客戶程序安裝在系統上。可使用下面的命令檢查系統是否已經安裝了 OpenSSH服務或查看已經安裝了何種版本。rpm -q openssh-server如果系統還未安裝OpenSSH服務,在Red Hat Enterprise Linux 5下安裝OpenSSH服務器可以有兩種方式,一種是源代碼方式安裝,一種是RPM軟件包方式安裝。源代碼可以從 http://download.chinaunix.net/ download/0008000/7713.shtml處下載,目前最新的版本是5.3p1版,文件名是openssh-5.3p1.tar.gz。RHEL 5自帶的OpenSSH版本是4.3p2版,文件名是openssh-server-4.3p2-16.el5,在發行版的第2張盤上。或將安裝盤放入光驅,加載光驅后在光盤的 Server目錄下找到 OpenSSH服務的 RPM安裝文件openssh-server-4.3p2-16.el5.i386.rpm,然后使用下面的命令安裝OpenSSH服務。rpm -ivh /mnt/Server/openssh-server-4.3p2-16. el5.i386.rpm,配置SSH服務的運行參數,是通過修改配置文件/etc/ssh/sshd_config實現的。
(1)啟動SSH服務的命令
/etc/init.d/sshd start
(2)停止SSH服務的命令
/etc/init.d/sshd stop
(3)重新啟動SSH服務的命令
/etc/init.d/sshd restart
(4)設置自動運行SSH服務
為了讓系統每次啟動時自動運行SSH服務,還可以將它設置為自啟動。執行“ntsysv”命令啟動服務配置程序,在出現的對話框中找到“sshd”服務,然后在其前面加上星號(*),選擇“確定”即可。
(1)基于Windows平臺
第一步:獲取PuTTY程序
Windows下有許多 SSH的客戶程序,推薦使用免費的PuTTY程序 。下載地址http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
第二步:連接SSH服務器
運行下載的 putty.exe文件,在 PuTTY程序主界面的“Host Name”中輸入服務器的IP地址或域名,在“Protocol”中選擇“SSH”選項,然后單擊“Open”按鈕連接。
如果是第一次連接到某臺服務器,由于服務器公鑰還沒有在注冊表中緩存,PuTTY程序會出現警告信息并顯示服務器的指紋信息。
第三步:在遠程系統上工作
如果PuTTY成功地連接到SSH服務器,就會顯示登錄信息并提示用戶輸入用戶名和口令。如果用戶名和口令輸入正確,就能成功登錄并在遠程系統上工作了。
(2)基于Linux平臺
在 Linux平臺下可以使用 OpenSSH 的客戶程序openssh-clients來連接SSH服務器。Red Hat Enterprise Linux默認已經安裝SSH客戶程序,可使用下面命令檢查系統是否已經安裝了SSH客戶程序或查看已經安裝了何種版本。rpm -q openssh-clients,如果系統還未安裝SSH客戶程序,可將Red Hat Enterprise Linux 5第一張安裝盤放入光驅,加載光驅后在光盤的Server目錄下找到SSH客戶程序的RPM安裝包文件 openssh-clients-4.3p2-16.el5.i386.rpm,然后使用下面的命令安裝SSH客戶程序。rpm-ivh /mnt/Server/openssh-clients-4.3p2-16.el5.i386.rpm 安裝好openssh-clients程序后,可以直接使用ssh命令登錄到SSH服務器。命令的格式為:ssh 服務器的IP地址或域名。
首先由用戶生成一對密鑰,然后將公鑰保存在SSH服務器用戶主目錄下.ssh子目錄中的 authorized_keys文件里(如/root/.ssh/authorized_keys),私鑰保存在本地計算機中。當用戶登錄時,服務器檢查authorized_keys文件的公鑰是否與用戶的私鑰對應。如果相符則允許用戶登錄,否則拒絕用戶的登錄請求。編輯文件/etc/ssh/sshd_config,找到語句“Password Authentication yes”,并將語句改為“PasswordAuthentication no”。
1.4.1 在putty中啟用公鑰認證
第一步:獲取 PuTTYgen程序。到 http://www.chiark. greenend.org.uk/~sgtatham/putty/download.html下載產生密鑰的程序 Puttygen.exe,運行下載的 Puttygen.exe文件,在PuTTYgen程序主界面中的“Type of key generate:”,選擇加密的算法,在“Number of bits in a generated key:”中輸入加密的位數,推薦使用默認的1024位SSH2 RSA加密,然后單擊“Generate”按鈕開始生成密鑰。
第二步:在密鑰產生的過程中,為了生成一些隨機的數據,應在程序的窗口內隨意移動鼠標(否則程序進度條不會改變)。密鑰生成后,出于安全性的考慮,程序會提示輸入保護私鑰的口令短語Key passphrase。
第三步:保存密鑰。口令短語用于保護私鑰。如果入侵者竊取了私鑰但沒有口令短語也不能使用該私鑰,如果不想使用口令短語保護,只需將該項留空即可,最后分別單擊“Save public key”和“Save private key”按鈕將公鑰和私鑰保存成文件。本例將保存公鑰的文件名為 linden.pub,保存私鑰的文件名為linden.ppk。
第四步:傳輸公鑰文件到SSH服務器。為了讓SSH服務器能讀取公鑰文件,還要將公鑰文件傳輸到SSH服務器的用戶主目錄下的.ssh子目錄中(如果沒有.ssh目錄,可手動建立),因為公鑰文件可以公開給所有用戶,傳輸公鑰文件時不必考慮安全問題,可以使用FTP、電子郵件或軟盤拷貝的方法。
第五步:轉換公鑰文件格式由于puttygen產生的公鑰文件格式與 OpenSSH程序使用的格式不兼容,因此還要在Linux中使用openssh軟件包自帶的ssh-keygen程序對其進行轉換。應輸入如下命令進行轉換:ssh-keygen -i -f /root/.ssh/ linden.pub>/root/.ssh/authorized_keys
第六步:連接SSH服務器
(1)運行PuTTY程序,在“Host Name”中輸入服務器的IP地址或域名(如192.168.16.100)。
(2)選擇對話框左邊的“Category”窗口的“Connection”→“SSH”→“Auth”。
(3)在“Private key file for authentication”輸入框中輸入私鑰文件的路徑,然后單擊“Open”按鈕連接。
(4)PuTTY成功地連接到SSH服務器后,服務器會提示輸入登錄用戶名。如果使用了保護私鑰的口令短語,則還會提示輸入口令短語。在登錄過程中,不需要輸入用戶的口令。
1.4.2 在openssh-client中啟用公鑰認證
(1)產生密鑰:可以使用 openssh軟件包自帶的ssh-keygen程序產生密鑰,如執行以下命令:ssh-keygen -t rsa。
(2)傳輸公鑰文件到SSH服務器:為了讓SSH服務器能讀取公鑰文件,還要將產生的公鑰文件id_rsa.pub傳輸到SSH服務器的用戶主目錄下的.ssh子目錄中(如果沒有.ssh目錄,可手動建立),并改名為authorized_keys。
(3)連接SSH服務器:現在可以直接使用ssh命令登錄到SSH服務器。
使用 OpenSSH工具將增進系統安全性,所有使用OpenSSH工具的通訊,包括口令,都會被加密。telnet和ftp使用純文本口令,并被明文發送。這些信息可能會被截取,口令可能會被檢索,然后未經授權的人員可能會使用截取的口令登錄進你的系統而對你的系統造成危害。所以應該盡可能地使用OpenSSH的工具集合來避免這些安全問題。
[1]孫永道,邵慧瑩.Linux實用技能教程[M].北京:機械工業出版社.2008.
[2]文東戈,孫昌立,王旭.Linux操作系統實用教程[M].北京:清華大學出版社.2010.
[3]陳博.孫宏彬於岳.Linux 實用教程[M].北京:人民郵電出版社.2008.