2.8.?使用SSH隧道的安全TCP/IP连接

可以使用SSH来加密客户端和UXDB服务器之间的网络连接。如果处理得当,这将提供一个足够安全的网络连接,即使是对那些无SSL能力的客户端。

首先确认在UXDB服务器的同一台机器上正确运行着一个SSH服务器,并且可以使用ssh作为某个用户登入。然后可以从客户端机器采用下面这种形式的命令建立一个安全的隧道:

ssh -L 63333:localhost:5432 joe@foo.com

-L参数中的第一个数(63333)是这端通道的端口号,可以是劝拿庞蜗菲教ㄗ⒉嵬锯未用过的端口(IANA 把端口49152到65535保留为个人使用)。第二个数(5432)是通道的远端:服务器所使用的端口号。在端口号之间的名称或 IP 地址是准备连接的数据库服务器,从哪个主机登入在本例由foo.com表示。为了使用这个隧道连接到数据库服务器,你在本地机器上连接到端口63333:

uxsql -h localhost -p 63333 uxdb

对于数据库服务器,在这个环境中它将把你看做是连接到localhost的主机foo.com上的真实用户joe,并且它会使用被配置用于来自这个用户和主机的连接的认证过程。注意服务器将不会认为连接是SSL加密的,因为事实上SSH服务器和UXDB服务器之间没有加密。只要它们在同一台机器上,这就不会造成任何额外的安全风险。

为了让隧道设置成功,必须允许通过ssh作为joe@foo.com连接,就像已经尝试使用ssh来创建一个终端会话。

应当设定好了端口转发:

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

但是数据库服务器则将会看到连接从它的foo.com接口进来,它没有被默认设置listen_addresses = 'localhost'所打开。这通常不是你想要的。

如果必须通过某个登录主机到数据库服务器,可以如下方式设置:

ssh -L 63333:db.foo.com:5432 joe@shell.foo.com

注意这种从shell.foo.comdb.foo.com的连接的方法将不会被SSH隧道加密。当网络被限制于各种方法时,SSH提供了相当多的配置可能性。

提示

一些其他的应用可以提供安全隧道,它们使用和SSH概念上相似的过程。

XML 地图 | Sitemap 地图