跳到主要内容

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

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

前提条件

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

环境说明

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

  • 数据源服务器版本:Windows 11(10.0.22621.963)

  • SSH 版本:OpenSSH_for_windows_8.6p1

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

提示

步骤一:添加并启动 SSH 服务

SSH 服务包含 OpenSSH Authentication AgentOpenSSH SSH Server 两个服务,其中 OpenSSH Authentication Agent 默认已安装好,您只需根据本操作步骤安装 OpenSSH SSH Server 并启动两个服务即可。

  1. 键盘键入Win+R组合键打开运行窗口,输入 fodhelper,并单击确定,打开可选功能窗口。

  2. 单击添加可选功能右侧的查看功能,在搜索框中输入 SSH,然后选中 OpenSSH 服务器右侧的复选框,单击下一步

    提示

    如果未找到任何结果,则您可能已经添加了 OpenSSH 服务器服务,可以顺着本步骤接着往下走。

  3. 在确认页面单击安装,并等待服务安装完成。安装完成后,需要重启您的计算机。

  4. 重启进入系统后,键盘键入Win+R组合键打开运行窗口,输入 services.msc,并单击确定,打开服务窗口。

  5. 在服务列表中找到 OpenSSH Authentication AgentOpenSSH SSH Server 服务,分别将两个服务的启动类型更改为自动并启动服务。

    操作步骤
    1. 双击目标服务,在弹出的属性窗口中(常规页签),单击启动类型右侧的下拉框,在下拉列表中选择自动

    2. 服务状态区域,如果状态为已停止,单击启动,并单击确定。如果状态为正在运行,则直接单击确定

  6. 键盘键入Win+R组合键打开运行窗口,输入 cmd,并单击确定,打开命令行,输入 netstat -an,查看 22 端口是否处于被监听的状态。当您在返回结果中找到如下结果时,代表 SSH 服务启动成功。

    TCP    [::]:22                [::]:0                 LISTENING

步骤二:配置 sshd_config 文件

  1. 用文本编辑器(例如记事本)打开 C:\ProgramData\ssh\ 目录下的 sshd_config 文件。

    提示

    ProgramData 目录默认隐藏,您需要单击文件资源管理器中的 查看 > 显示 > 隐藏的项目,才能显示隐藏中的目录。

    invisible

  2. 根据下表进行配置:

    参数说明
    AuthorizedKeysFile.ssh/authorized_keys密钥文件所在目录。
    说明:请确保该参数未被注释。
    PubkeyAuthenticationyes是否支持通过公钥连接。
    说明:请确保该参数未被注释。
    Match Groupa dministratorsAuthorizedKeysFile __PROGRAMDATA__/ssh/ad
    ministrators_authorized_keys
    管理员用户的公钥文件路径。
    说明请注释掉该参数,否则将无法完成认证。由于参数和值分两行,因此两行都需要注释掉。
  3. 重启 SSH Server 服务。

    提示

    重启方法:

    1. 键盘键入Win+R组合键打开运行窗口,输入 services.msc,并单击确定
    2. 在服务列表中找到 OpenSSH SSH Server 服务并双击,在弹出的属性窗口中(常规页签),依次单击停止启动即可。

步骤三:生成 SSH Tunnel 密钥文件并将公钥加入到白名单文件

  1. 键盘键入Win+R组合键打开运行窗口,输入 cmd,并单击确定,打开命令提示符窗口。

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

    提示

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

    • <密钥文件名>:私钥,用于验证登录者身份。
    • <密钥文件名>.pub:公钥,安装在服务器,用于配对登录者提供的私钥。
  3. 通过文本编辑器(例如记事本)打开<密钥文件名>.pub 文件,将里面的内容完全复制,并粘贴到 C:\Users\<您的系统登录名\.ssh\authorized_keys 文件中(如果不存在,请手动在该目录下创建同名文件,请注意无后缀名)。

    提示
    • 请确保 authorized_keys 文件的权限主体仅为 SYSTEMAdministrators您当前登录系统的用户,否则会导致连接失败。您可以通过如下方法查看文件权限:
      1. 右键单击 C:\Users\<您的系统登录名>\.ssh\ 目录下的 authorized_keys 文件,单击属性
      2. 单击安全页签,查看组或用户名(G)下方框内的权限主体。如果有多余主体,则需要手动删除。
    • 删除权限主体的方式(接查看文件权限操作):
      1. 单击安全页签右下方的高级,单击禁用继承,在弹出窗口中,单击将已继承的权限转换为此对象的显式权限
      2. 选中权限条目中不需要的条目,单击删除,确保剩余的权限主体为 SYSTEMAdministrators您当前登录系统的用户,单击确定

步骤四:在 NineData 控制台添加数据源

  1. 登录 NineData 控制台

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

  3. 创建数据源页面,根据下表配置参数。

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