从自己的电脑上访问公司的 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 cvs_user@123.45.67.89
也等同于在配置文件中所配置的内容。