3.8. 用SSH进行安全 TCP/IP 联接

感谢: 这个主意来自一封 Gene Selkov, Jr. () 的 e-mail。于 1999-09-08 为回答 Eric Marsden 的一个问题而作。

我们可以使用 SSHPostgreSQL 服务器和客户端之间的网络联接进行加密。经过适当处理后,这样做可以获得一个 足够安全的网络联接。

首先确认 SSH 正在和 PostgreSQL 服务器的同一台机器上 正确地运行,而且你可以通过某个用户用SSH登录.然后你可以 用下面这样的命令从客户端的机器上建立一个安全通道:

ssh -L 3333:foo.com:5432 joe@foo.com

-L 参数的第一个数字,3333,是通道你这端的端口号;可以自由选择。 第二个数字,5432,是通道的远端 -- 你的服务器使用的 端口号。在两个端口号之间的名称或者地址是你准备联接的数据库服务器。 为了使用这个通道与你的数据库服务器联接,你在本机于端口 3333 联接:

psql -h localhost -p 3333 template1

对于数据库服务器而言,她会把你当做真正的用户 joe@foo.com 并且使用为这个用户设置的认证手段 进行认证.为了保证能够成功地建立通道,你必须被允许作为 joe@foo.com通过ssh建立联接, 就象你使用ssh建立终端会话一样.

技巧: 还有几种不同的产品可以提供安全的通道,所使用的过程类似我们 刚刚描述的过程.