SSH 隧道 API
托管 Redash SSH 隧道 API
SaaS Redash 流量始终来自我们的公共 IP 地址:52.71.84.157
。我们建议您直接通过防火墙将此地址列入白名单。或者,您可以使用下面描述的 API 设置 SSH 隧道。
如果以下说明对您不起作用,请使用应用内聊天框联系 Redash 支持。
概述
要通过 SSH 将 Redash 连接到您的数据库,需要两组详细信息:数据库访问详细信息和 SSH 访问详细信息。
数据库访问详细信息始终直接输入到 Redash 中,无论是否需要 SSH 隧道。 admin
组的任何成员都可以从“设置”>“数据源”选项卡执行此操作。对于隧道连接,数据源的 host
将是您的 VPC/内网内部的私有主机名。除非您的防火墙允许来自我们 IP 的流量或您配置了 SSH 隧道,否则尝试连接此数据源将失败。
在 Redash 中设置数据源时,您必须输入数据库侦听的端口。即使您的数据库使用默认端口(例如 Postgres 上的 5432),您也必须在设置屏幕上明确输入它。否则,您将收到一条错误消息,提示:“尚未为此查询运行器实现 SSH 隧道。”
SSH 访问详细信息是使用 Redash 的 REST API 提供的,因为此功能尚未添加到我们的前端用户界面。隧道 API 使用公钥身份验证连接到您网络中的堡垒服务器。通过 SSH 连接到堡垒机后,Redash 会将数据库访问详细信息发送到您的数据库。
为此,您的堡垒主机必须通过 Internet 公开。您应该将我们的公钥添加到 Redash 将用来进行身份验证的系统用户的主文件夹中的 .ssh/authorized_keys
中(在某些系统上,路径为 .ssh/allowed_keys
)。我们建议为此目的创建一个专用用户。
注意:SSH 连接是临时的。每次执行查询时都会尝试新的连接。
设置连接
您将需要
(a)Redash 将用来连接您的堡垒机地址、端口和系统用户(b)要进行隧道传输的数据源的 URL(c)您的托管帐户的组织 slug(d)您的组织内管理员用户的 API 密钥(可从“个人资料”屏幕获得)
步骤 1:GET
数据源详细信息
复制您的组织 slug 和数值数据源 ID,并向 /api/data_sources
端点发出 API 调用。
https://app.redash.io/<slug>/api/data_sources/<数据源 id>
此请求必须包含一个 Authorization
标头,其值为 Key <管理员 API 密钥>
。
JSON 响应包含指定数据源的所有详细信息。复制 name
、type
和 options
对象,然后继续下一步。
步骤 2:POST
SSH 访问详细信息
向与步骤 1 相同的端点发出 POST
api 调用,并添加一个包含三个键值对的 ssh_tunnel
对象:ssh_host
、ssh_port
和 ssh_username
。使用上面 (a) 中的值。例如
{
"name": "My Sample Database",
"type": "pg",
"options": {
"host": "private.address.in.my.domain.xyz",
"port": 5432,
"database": "sampledb",
"user": "redash-db-user",
"password": "-------------------",
"ssh_tunnel": {
"ssh_username": "redash-tunnel",
"ssh_port": 22,
"ssh_host": "bastion.my.domain.xyz"
}
}
}
如果您收到 HTTP 响应,其代码为 200
,则表示您的 SSH 访问详细信息已保存。
步骤 3:测试连接
您可以访问 Redash 中的数据源并单击“测试连接”,或者向 https://app.redash.io/<slug>/api/data_sources/<数据源 id>/test
发出 POST
api 调用。
JSON 响应将指示 Redash 是否通过隧道成功访问了您的数据库。
根据您的防火墙设置,您可能需要将 Redash 的公共 IP 地址 52.71.84.157
列入白名单。