從自己的電腦上訪問公司的 CVS 服務器需要利用 SSH 客戶端的端口轉發功能。以前在 Windows 上,一般是使用 SecureCRT 作為 SSH 客戶端。之後將工作平台遷移到 Ubuntu Linux 之下,卻一時沒有找到直接使用 OpenSSH 配置端口轉發的方法。
只知道利用 PuTTY 的 Tunnel 來完成這樣工作,但是多開著一個應用程序卻只做端口轉發這一件事情,多少覺得有些別扭。
昨日機緣巧合,無意中檢索到了一些關於 OpenSSH 配置端口轉發的文章。以下面的例子說明如何配置 OpenSSH 的端口轉發功能,所需要修改的配置文件為 ~/.ssh/config。
Host testsrv Hostname 123.45.67.89 User cvs_user LocalForward 2401 123.45.67.90:2401
其中 Host 後面的是主機的名稱,指定這個名稱後,就可以使用這個名稱代替該主機的 IP 使用,例如:
ssh testsrv
即等同於
ssh 123.45.67.89
之後的 User 即指定連接主機使用的用戶名。
LocalForward 也就是用來配置端口轉發功能的。2401 表示本地的端口號,後邊的 123.45.67.90:2401 是 CVS 服務器的 IP 地址和服務端口(也就是轉發的目標主機和端口)。在這裡 LocalForward 表示是使用本地端口進行轉發,如果要使用遠程端口進行轉發的話,則是使用 RemoteForward 參數。配置完畢,連接主機 testsrv 成功之後,即建立了一個安全的 SSL 加密通道。
需要注意的是,有些文章裡面把最後一行的
(1) 2401 123.45.67.90:2401
寫成了
(2) 2401:123.45.67.90:2401
這樣子是會出錯的,(2) 中所示的格式,是在終端中直接用 ssh 配置端口轉發參數所使用的格式。例如
ssh -L 2401:123.45.67.90:2401 [email protected]
也等同於在配置文件中所配置的內容。