SSH2

現在開始說明如何在 UNIX 下使用 SSH 連線。 此教材談的是歐洲 SSH Communications Security 公司出版的 SSH2 軟體套件, 而非 OpenSSH。SSH2 雖然是一個商業組織生產的軟體,但仍是開放性的軟體。 SSH2 和 OpenSSH 理論上符合一樣的協定規格,但是兩個不同的程式, 請讀者留意。

以下,我們用 SSH 代表 SSH2。

首先, 請先確定你所使用的主機和要連線的主機都有安裝 SSH 2.4.0 以上的版本, 如果任何一端沒有安裝,那麼當然無法使用 SSH 連線。

在本地端 (Local):
下指令
ssh -v
  • 如果你目前使用的主機有安裝 SSH,視窗會出現以下的回應:
    ssh: SSH Secure Shell x.x.x (non-commercial version) on sparc-sun-solaris2.6
    其中 x.x.x 就是 SSH 的版本, 2.4.0 以下的版本雖然可以連線, 但可能會有安全上的漏洞。
  • 要是視窗出現類似下面的回應:
    OpenSSH_3.4p1 FreeBSD-20020702, SSH protocols 1.5/2.0, OpenSSL 0x0090601f
    那表示你目前使用的主機用的是 Opne SSH,那只好請你自己去看說明文件﹝ 輸入 man ssh ﹞。
  • 如果視窗出現下面的回應:
    ssh: Command not found.
    表示這台主機根本沒有安裝 SSH 或 OpenSSH。
遠方主機 (Remote):
下指令
telnet HostName 22
在這裡 HostName 指的是遠方主機的位址。
  • 如果出現類似下面的回應:
    Trying 140.115.25.6...
    Connected to 140.115.25.6.
    Escape character is '^]'.
    SSH-2.0-x.x.x SSH Secure Shell (non-commercial)
    表示遠方主機安裝了 SSH x.x.x 版。
    要跳回去,請按 Ctrl+], 當提示符號變成 telnet> 時下指令 quit 就可以了。
  • 要是出現下面的回應:
    Trying 140.115.25.4...
    Connected to 140.115.25.4.
    Escape character is '^]'.
    SSH-1.99-OpenSSH_3.4p1 FreeBSD-20020702
    請注意最後一行,這表示遠方主機所安裝的是 OpenSSH, 你恐怕無法用 SSH 和 OpenSSH 互相溝通。 跳回去的方法和 SSH 的一樣,所以就不重複了。
  • 要是出現下面的回應:
    Trying 140.115.26.32...
    telnet: Unable to connect to remote host: Connection refused
    表示遠方主機既沒有安裝 SSH,也沒有安裝 OpenSSH。

如果確認沒問題,那我們就一步一步來:(以下的說明,請特別注意大小寫)

一、製作公鑰和私鑰
請下指令
ssh-keygen2 name
在此 name 是由使用者自行選擇的鑰匙名字。 輸入後,視窗會出現以下回應:
Generating 1024-bit dsa key pair
請等待一段時間,此時程式正在製作鑰匙,鑰匙完成後會出現下面的訊息:
Key generated.
1024-bit dsa, liyl@wangwei, Wed Jul 17 2002 06:57:08
Passphrase :
程式會要求使用者輸入通行碼以避免私鑰被人盜用。當你輸入通行碼後, 視窗會出現以下回應:
Again :
要求你再輸入一次通行碼以確認你剛剛並沒有打錯。最後會出現下面的訊息:
Private key saved to name
Public key saved to name.pub
這段訊息表示程式把私鑰用 name 作檔名儲存起來, 把公鑰用 name.pub 作為檔名儲存起來。

二、使用鑰匙
鑰匙做好以後,放在你自己的目錄下的 .ssh2/ 下, 然後你要寫一個檔案,命名為 identification,放在 .ssh2/ 下, 把下面這行文字加進去:
IdKey name
name 是你的放私鑰的檔案的名字。這麼一來鑰匙便算是開始啟用了。

三、交換公鑰
鑰匙完成以後,就必須上傳到遠方主機中自己的目錄下的 .ssh2/ 資料夾中, 另一方面,你也必須把遠方主機的公鑰放到自己這邊的 .ssh2/ 下。 下指令
sftp UserName@HostName
這裡 HostName 是遠方主機的位址, UserName 則是你自己的帳號。
如果你是第一次用 SSH 的程式登入這一台主機, 那麼主機會問你要不要把屬於這台主機的鑰匙﹝ HostKey ﹞記下來, 請視情況回答 yes 或 no ﹝回答 y 或 n 是沒用的﹞, 大部分情況應該都是回答 yes 的。
接著應該會要求你輸入帳號的通行碼,登入之後, 操作方式和 ftp 一樣,請照之前的說明交換公鑰,然後登出回到原來工作的主機。
接著要再編輯另一個檔案 authorization,放在 .ssh2/ 下, 加入這一行文字:
Key PublicKey.pub
PublicKey.pub 是你從其他地方抓下來的公鑰的檔名。如此一來, 你這邊的準備工作就算完成了。 以後如果你從其他地方抓了新的公鑰,只要再加上同樣的文字就可以了。 像這樣:
Key abc.pub
Key def.pub
Key jklljl.pub
這樣表示你從三個不同的遠方主機抓到了三個公鑰:abc、def、jklljl, SSH 會自行判斷什麼時候要用哪支公鑰。

四、登入
要使用 ssh 登入,下指令
ssh -l UserName HostName
其中 HostName 是遠方主機的位址, UserName 是你的帳號。
如果遠方主機中的 .ssh2/authorization 還沒有修該的話, 程式應該會向你要通行碼,此時你的通行碼是在加密狀態。 登入後,同樣編輯 authorization,加入
Key PublicKey.pub
這裡的 PublicKey.pub 則是你上傳到這台主機的公鑰的檔名。
再來先登出,再用 SSH 登入,如果看到類似下面的訊息:
Passphrase for key "/home/math88/liyl/.ssh2/bgs" with comment "1024-bit dsa, li:
這就代表程式要求你輸入私鑰的通行碼﹝當然, 如果你沒有設定通行碼,那你就直接登入,不用任何通行碼﹞, 輸入以後,程式就登入遠方主機,此時所有在網路上互傳的訊息都是加密的。

李易霖 (02/7/18) --- 02/10/15 (單)