暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【翻译PG】18.11. 使用隧道的安全 TCP/IP 连接

seagull 2024-01-25
36

18.11. 使用隧道的安全 TCP/IP 连接

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

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

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

-L参数中的第一个数(63333)是隧道在你那一端的端口号,它可以是任意未用过的端口(IANA 把端口 49152 到 65535 保留为个人使用)。第二个数(5432)是隧道的远端:你的服务器所使用的端口号。在端口号之间的名字或 IP 地址是你准备连接的数据库服务器的主机,至于你是从哪个主机登入的,在这个例子中则由foo.com表示。为了使用这个隧道连接到数据库服务器,你在本地机器上连接到端口 63333:

psql -h localhost -p 63333 postgres
复制

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

为了让隧道设置成功,你必须允许通过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 的文档。

提示

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


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论