SSH 隧道
Metabase 可以通过首先在 Metabase 和数据仓库之间建立连接,然后使用该连接作为桥梁连接到数据仓库,从而连接到某些数据库。这使得在其他情况下无法使用 Metabase 的情况下,连接到某些数据仓库成为可能。
何时使用 SSH 隧道
通常,SSH 隧道有两种基本用例:
- 当直接连接不可能时。
- 当由于安全策略禁止直接连接时。
有时,当数据仓库位于企业环境中时,直接连接会被防火墙和入侵防御系统等安全设备阻止。堡垒机(Bastion host)提供了一个选项:首先连接到受保护网络边缘的计算机,然后从该堡垒机建立到内部网络中数据仓库的第二个连接,本质上是将这两个连接拼接在一起。使用 SSH 隧道功能,Metabase 可以自动化此过程。
Metabase 云 目前不支持到数据库的 VPN 连接。要连接到私有网络中的数据库,您可以改为使用 SSH 隧道。
如何使用 SSH 隧道
通过堡垒机连接时
- 对“使用 SSH 隧道进行数据库连接”参数选择“是”。
- 在
Host
参数中输入从网络内部看到的数据仓库主机名。 - 在
Port
参数中输入从网络内部看到的数据仓库端口。 - 在
SSH tunnel host
参数中输入从网络外部(或您所在位置)看到的堡垒机外部名称。 - 在
SSH tunnel port
参数中输入从网络外部看到的 SSH 端口。无论您连接到哪个数据仓库,这通常是 22。
对于身份验证,您有两个选项
-
使用用户名和密码
- 在
SSH tunnel username
和SSH tunnel password
字段中,输入您用于登录堡垒机的用户名和密码。
- 在
-
使用 SSH 密钥(PKI 身份验证)
- 在
SSH authentication
选项中选择 SSH 密钥。 - 将您的 SSH 私钥内容粘贴到
SSH private key
字段中。 - 如果您的密钥有密码,请将其输入到
Passphrase for the SSH private key
字段中。
- 在
如果您无法连接,请尝试直接使用 ssh 连接到 SSH 服务器/堡垒机来测试您的 SSH 凭据。
ssh <SSH tunnel username>@<SSH tunnel host> -p <SSH tunnel port>
另一种无法直接连接的常见情况是连接到只能本地访问且不允许远程连接的数据仓库。在这种情况下,您将打开一个到数据仓库的 SSH 连接,然后从那里连接回同一台计算机。
- 对“使用 SSH 隧道进行数据库连接”参数选择“是”。
- 在
Host
参数中输入localhost
。这是服务器的名称。 - 在
Port
参数中输入与您直接在数据仓库主机系统上时使用的相同值。 - 在
SSH tunnel host
参数中输入从网络外部(或您所在位置)看到的数据仓库的外部名称。 - 在
SSH tunnel port
参数中输入从网络外部看到的 SSH 端口。无论您连接到哪个数据仓库,这通常是 22。 - 如上所述选择您的身份验证方法(用户名和密码或 SSH 密钥)。
如果您遇到连接问题,请尝试在旧版 Windows 系统上使用 ssh 或 PuTTY 手动连接来验证 SSH 主机端口和密码。
注意:SSH 服务器需要将“AllowTcpForwarding”配置设置为“yes”才能使隧道工作。
间接连接的缺点
虽然使用 SSH 隧道可以连接到原本无法访问的数据仓库,但只要可能,通常都建议使用直接连接。
通过隧道连接存在一些固有限制:
- 如果因为您的计算机进入睡眠状态或更改网络而导致 SSH 连接关闭,所有已建立的连接也将关闭。这可能导致在笔记本电脑休眠后恢复连接时出现延迟。
- 它几乎总是更慢。连接必须通过一台额外的计算机。
- 打开新的 SSH 连接需要更长时间。
- 同一 SSH 隧道上的多个操作可能会相互阻塞。这会增加延迟。
- 通过堡垒机的连接数量通常受到组织策略的限制。
- 一些组织有 IT 安全策略,禁止使用 SSH 隧道绕过安全边界。
直接运行 SSH
Metabase 中的 SSH 隧道功能是 SSH 的一个便捷包装,可自动化通过隧道连接的常见情况。它还使得无法提供 Shell 访问权限的系统也能建立连接。Metabase 使用内置的 SSH 客户端,不依赖于已安装系统的 SSH 客户端。这使得您可以从无法手动运行 SSH 的系统进行连接。这也意味着 Metabase 无法利用系统提供的身份验证服务,例如 Windows 域身份验证或 Kerberos 身份验证。
如果您需要使用 Metabase 未启用的方法进行连接,通常可以通过直接运行 SSH 来实现。
ssh -Nf -L input-port:internal-server-name:port-on-server username@bastion-host.domain.com
这允许您使用 SSH 中包含的全部功能。如果您经常这样做,请告诉我们,以便我们考虑通过 Metabase 使您的流程更便捷。
延伸阅读
阅读其他 Metabase 版本的文档。