跳到主要内容

通过 SSH Tunnel 接入自建 MySQL 数据源(Linux)

NineData 支持通过多种连接方式添加数据源,本文详细介绍如何通过 SSH Tunnel 进行添加。

前提条件

  • 目标数据源所在服务器中已安装并开启了 SSH 服务。

  • 目标数据源所在服务器的 SSH 配置文件(sshd_config)参数如下:

    • AllowTcpForwarding yes
    • PubkeyAuthentication yes
    • AuthorizedKeysFile .ssh/authorized_keys
    提示

    sshd_config 文件路径通常为 /etc/ssh/sshd_config,文件修改方法:vim /etc/ssh/sshd_config

环境说明

本文以添加自建数据源为例,介绍 SSH Tunnel 的使用方法。本文案例中使用的环境如下:

  • 数据源服务器版本:Linux version 4.4.180+

  • SSH 版本:OpenSSH_8.2p1

  • 数据源:MySQL 8.0 自建数据源

提示

如果您使用 Windows 系统,请参见通过 SSH Tunnel 接入自建 MySQL 数据源(Windows)

操作步骤

  1. 登录 NineData 控制台

  2. 在左侧导航栏,单击数据源管理>数据源

  3. 单击页面右上角的创建数据源,在创建数据源页面,根据下表配置参数。

    参数
    说明
    数据源名称输入数据源的名称,为了方便后续查找和管理,请尽量使用有意义的名称。
    数据源位置选择公网/自建/他云
    环境根据该数据源的实际业务用途进行选择,作为数据源的环境标识。默认提供生产开发环境,同时支持您创建自定义环境
    说明:在组织模式下,数据库环境还可应用于权限策略管理,例如,默认情况下的生产环境管理员角色仅支持访问生产环境下的数据源,无法访问其他环境的数据源。更多信息,请参见管理角色
    数据库类型选择 MySQL
    连接方式选择 SSH Tunnel 连接
    SSH 主机输入目标数据源所在服务器的 IP 或者域名,以及对应的端口号(SSH 服务的默认端口号为 22)。
    说明:您的服务器 IP 地址必须是公网地址。
    SSH 认证方式
    • 密码认证:通过 SSH 用户名(即服务器的登录名)和密码(即服务器的登录密码)进行连接。
    • 密钥认证(推荐):通过 SSH 用户名密钥文件进行连接,该选项需要您生成密钥文件。如何生成,请参见附录
    SSH 用户名输入目标数据源所在服务器的登录用户名。
    密码SSH 认证方式密码认证时显示,输入目标数据源所在服务器的登录密码。
    说明:输入完成后,您需要单击右侧的连接测试,可能出现如下两种结果:
    • 提示连接成功:表示数据源连接成功。
    • 提示错误信息:表示连接失败,您需要根据提错误示排查故障原因并重试。
    密钥文件SSH 认证方式密钥认证时显示,您需要单击上传文件上传私钥文件,即无后缀名的密钥文件。如果您还未创建,请参见附录
    口令SSH 认证方式密钥认证时显示,输入生成密钥文件时设置的密码。如果您在密钥生成的步骤 1 中未设置密码,此处请留空。
    说明:输入完成后,您需要单击右侧的连接测试,可能出现如下两种结果:
    • 提示连接成功:表示 SSH Tunnel 已打通。
    • 提示错误信息:表示连接失败,您需要根据提错误示排查故障原因并重试。
    连接地址数据源的连接地址和端口。
    说明:由于您已通过 SSH Tunnel 连接到您数据源所在的服务器,因此,可以直接输入 localhost127.0.0.1,并填入目标数据源的端口号即可。
    用户名登录数据源的用户名。
    密码登录数据源的用户名对应的密码。
    说明:输入完成后,您需要单击右侧的连接测试,可能出现如下两种结果:
    • 提示连接成功:表示该数据源已可以正常访问。
    • 提示错误信息:表示连接失败,您需要根据错误提示排查故障原因并重试。
    接入地域选择离您数据源所在地最近的地域,可有效降低网络延迟。
    加密传输是否使用 SSL 加密方式访问数据源。数据源如果强制 SSL 加密连接,则必须开启本开关,否则连接失败。
    单击右侧的开关可开启或关闭加密传输。单击加密传输左侧的>可以展开详细配置。
    说明
    • 各类型数据源支持的选项不同,请以控制台为准。
    • SSL 的配置方法请参见官方文档:配置 MySQL 加密连接
  4. 单击创建数据源,完成数据源的添加。

附录:Linux 系统生成 SSH Tunnel 密钥文件

注意:下列操作步骤均需要在数据源所在服务器的命令行窗口(终端)中执行。

  1. 执行 ssh-keygen -f <密钥文件名> 命令生成密钥文件,系统提示 Enter passphrase (empty for no passphrase): 时,您可以选择为该密钥文件设置密码(输入密码并按回车键)或不设置密码(直接按回车键)。

    提示

    该命令会生成如下两个文件:

    • <密钥文件名>:私钥,用于验证登录者身份。
    • <密钥文件名>.pub:公钥,安装在服务器,用于配对登录者提供的私钥。
  2. 输入 cat <密钥文件名>.pub >> ~/.ssh/authorized_keys 命令将公钥内容添加到 authorized_keys 文件的末尾。

    提示

    authorized_keys 文件的权限必须小于等于 600,即 -rw-------(仅文件属主可读写),否则可能导致连接失败。您可以在 ~/.ssh/ 目录执行 llls -l 命令查看该文件的权限,如果权限未达到要求,可以执行 chmod 600 authorized_keys 修改该文件权限。

常见问题

问:为什么我配置完 SSH Tunnel 后单击连接测试,提示 SSH 用户名或密钥不正确

  • 您登录主机用的用户名或密码不正确。
  • 如果您使用密钥认证,请确保 authorized_keys 文件的权限小于等于 600,您可以执行 chmod 600 ~/.ssh/authorized_key 命令变更该文件的权限。