在Linux系統中,OpenSSH是目前最流行的遠程系統登入與檔案傳輸應用,也是傳統Telenet、FTP和R系列等網路應用的換代產品。其中,ssh(Secure Shell)可以替代telnet、rlogin和rsh,scp(Secure Copy)與sftp(Secure FTP)能後替代ftp。
OpenSSH採用密鑰的方式對資料進行加密,確保資料轉送的安全。在正式開始傳輸資料之前,雙方首先要交換密鑰,當收到對方的資料時,再利用密鑰和相應的程式對資料進行解密。這種加密的資料轉送有助於防止非法使用者擷取資料資訊。
OpenSSH採用隨機的方式產生公私密鑰。密鑰通常只需產生一次,必要時也可以重新製作。
當使用ssh命令登入到遠程系統時,OpenSSH伺服器的sshd守護進行將會發送一個公開金鑰,OpenSSH用戶端軟體ssh將會提示使用者確認是否接收發送的公開金鑰。同時,OpenSSH用戶端也會向伺服器回傳一個密鑰,使OpenSSH串連雙方的每個系統都擁有對方的密鑰,因而能夠解密對方經由加密鏈路發送的加密資料。
OpenSSH伺服器的公開金鑰與私玥均儲存在/etc/ssh目錄中。在OpenSSH用戶端,使用者收到的所有公開金鑰,以及提供密鑰的OpenSSH伺服器的IP地址均儲存在使用者主目錄下的~/.ssh/known_hosts檔案中(.ssh是一個隱藏目錄)。如果密鑰與IP地址不再匹配,OpenSSH將會認為某個環節出了問題。例如,重新安裝作業系統或者升級OpenSSH都會導致系統再次產生新的密鑰,惡意的網路攻擊也會造成密鑰的變動。因此,當密鑰發生變化時,總是應當先瞭解密鑰發生變化的原因,以確保網路訪問期間的資料安全。
1 安裝OpenSSH伺服器
在Ubuntu中,OpenSSH的用戶端作為一個基礎系統軟體會隨這系統一起安裝,但OpenSSH伺服器需要單獨安裝。安裝openssh-server伺服器軟體包,可以使用apt-get、aptitude或synaptic等軟體工具。
$ sudo apt-get install openssh-server
安裝之後,可以使用以下命令驗證OpenSSH伺服器的sshd守護進程是否已開啟。
$ pidof sshd
2 使用SSH登入到遠程系統
在OpenSSH中,ssh是一個重要的用戶端應用程式。利用ssh,可以採用加密的通訊方式,登入到遠程系統,其文法格式如下:
ssh [options] [-l login_name][user@]hostname [command]
其中,”-llogin_name”選項用於指定使用者名稱,表示以哪一個使用者身份登入到遠程系統。如果不提供使用者名稱,則以目前使用者的身份登入到遠程系統。例如,下面命令形式表示以webgod使用者身份,採用預設的22連接埠,登入到遠程系統(注意,這裡”Welcome to Ubuntu 12.04 LTS (GNU/Linux) ……https://helo.ubunut.com/”出自/etc/motd檔案)。除了”-l”選項之外,為了以其他使用者身份登入到遠程系統,還可以使用”user@hostname”的方式登入到遠程系統。
下載檔案
例如,要把遠程系統中的~/.ssh/id_rsa.pub檔案複製到本地系統的/tmp目錄中。
$ scp webgod@10.203.138.129:~/.ssh/id_rsa.pub /tmp
假定已經把sshd守護進程監聽的TCP連接埠修改為435。要使用該連接埠進行檔案複製,則可以用如下命令。
$ scp -P 534 webgod@10.203.138.129:~/.ssh/id_rsa.pub /tmp
利用scp上傳檔案
$ scp /etc/hosts webgod@10.203.138.129:/tmp
$ scp -P 435 /etc/hosts webgod@10.203.138.129: /tmp