SSH隧道

Metabase 可以通过首先建立与 Metabase 和数据仓库之间服务器的连接,然后使用该连接作为桥梁连接到数据仓库,从而连接到某些数据库。这使得在某些情况下可以连接到某些数据仓库,否则这些情况会阻止使用 Metabase。

何时使用 SSH 隧道

一般来说,SSH 隧道有两种基本用例

  • 当直接连接不可能时。
  • 当由于安全策略禁止直接连接时。

有时,当数据仓库位于企业环境中时,直接连接会被防火墙和入侵防御系统等安全设备阻止。堡垒主机提供了一个选项,首先连接到受保护网络边缘的计算机,然后从该堡垒主机计算机建立与内部网络内数据仓库的第二个连接,本质上是将这两个连接拼接在一起。使用 SSH 隧道功能,Metabase 可以自动化此过程。

Metabase Cloud 目前不支持与数据库的 VPN 连接。要连接到私有网络中的数据库,您可以改用 SSH 隧道。

如何使用 SSH 隧道

当通过堡垒主机连接时

  • 对“使用 SSH 隧道进行数据库连接”参数回答“是”。
  • Host 参数中输入从网络内部看到的数据仓库的主机名。
  • Port 参数中输入从网络内部看到的数据仓库端口。
  • SSH tunnel host 参数中输入从网络外部(或您所在位置)看到的堡垒主机的外部名称。
  • SSH tunnel port 参数中输入从网络外部看到的 SSH 端口。这通常是 22,无论您连接到哪个数据仓库。

对于身份验证,您有两种选择

  • 使用用户名和密码

    • SSH tunnel usernameSSH 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 密钥)。

如果您在连接时遇到问题,请通过使用 ssh 或旧版 Windows 系统上的 PuTTY 手动连接来验证 SSH 主机端口和密码。

间接连接的缺点

虽然使用 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 [email protected]

这使您可以使用 SSH 中包含的全部功能。如果您发现自己经常这样做,请告知我们,以便我们可以考虑通过 Metabase 使您的流程更加便捷。

延伸阅读

阅读其他Metabase 版本的文档。