通过 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 自建数据源
- 不同版本的 Windows 在操作上可能略有不同。
- 2018 年 4 月份之前发布的 Windows 系统中不包含 OpenSSH,您需要手动安装。最新版安装包下载地址:官方 Github。
- 如果您使用 Linux 系统,请参见通过 SSH Tunnel 接入自建 MySQL 数据源(Linux)。
步骤一:添加并启动 SSH 服务
SSH 服务包含 OpenSSH Authentication Agent
和 OpenSSH SSH Server
两个服务,其中 OpenSSH Authentication Agent
默认已安装好,您只需根据本操作步骤安装 OpenSSH SSH Server
并启动两个服务即可。
键盘键入Win+R组合键打开运行窗口,输入
fodhelper
,并单击确定,打开可选功能窗口。单击添加可选功能右侧的查看功能,在搜索框中输入
SSH
,然后选中 OpenSSH 服务器右侧的复选框,单击下一步。提示如果未找到任何结果,则您可能已经添加了 OpenSSH 服务器服务,可以顺着本步骤接着往下走。
在确认页面单击安装,并等待服务安装完成。安装完成后,需要重启您的计算机。
重启进入系统后,键盘键入Win+R组合键打开运行窗口,输入
services.msc
,并单击确定,打开服务窗口。在服务列表中找到
OpenSSH Authentication Agent
和OpenSSH SSH Server
服务,分别将两个服务的启动类型更改为自动并启动服务。操作步骤双击目标服务,在弹出的属性窗口中(常规页签),单击启动类型右侧的下拉框,在下拉列表中选择自动。
在服务状态区域,如果状态为已停止,单击启动,并单击确定。如果状态为正在运行,则直接单击确定。
键盘键入Win+R组合键打开运行窗口,输入
cmd
,并单击确定,打开命令行,输入netstat -an
,查看22
端口是否处于被监听的状态。当您在返回结果中找到如下结果时,代表 SSH 服务启动成功。TCP [::]:22 [::]:0 LISTENING
步骤二:配置 sshd_config
文件
用文本编辑器(例如记事本)打开
C:\ProgramData\ssh\
目录下的sshd_config
文件。提示ProgramData
目录默认隐藏,您需要单击文件资源管理器中的 查看 > 显示 > 隐藏的项目,才能显示隐藏中的目录。根据下表进行配置:
参数 值 说明 AuthorizedKeysFile
.ssh/authorized_keys
密钥文件所在目录。
说明:请确保该参数未被注释。PubkeyAuthentication
yes
是否支持通过公钥连接。
说明:请确保该参数未被注释。Match Groupa dministrators
AuthorizedKeysFile
__PROGRAMDATA__/ssh/ad
ministrators_authorized_keys
管理员用户的公钥文件路径。
说明:请注释掉该参数,否则将无法完成认证。由于参数和值分两行,因此两行都需要注释掉。重启 SSH Server 服务。
提示重启方法:
- 键盘键入Win+R组合键打开运行窗口,输入
services.msc
,并单击确定。 - 在服务列表中找到
OpenSSH SSH Server
服务并双击,在弹出的属性窗口中(常规页签),依次单击停止、启动即可。
- 键盘键入Win+R组合键打开运行窗口,输入
步骤三:生成 SSH Tunnel 密钥文件并将公钥加入到白名单文件
键盘键入Win+R组合键打开运行窗口,输入
cmd
,并单击确定,打开命令提示符窗口。执行
ssh-keygen -f <密钥文件名>
命令生成密钥文件,系统提示Enter passphrase (empty for no passphrase):
时,您可以选择为该密钥文件设置密码(输入密码并按回车键)或不设置密码(直接按回车键)。提示该命令会生成如下两个文件:
<密钥文件名>
:私钥,用于验证登录者身份。<密钥文件名>.pub
:公钥,安装在服务器,用于配对登录者提供的私钥。
通过文本编辑器(例如记事本)打开
<密钥文件名>.pub
文件,将里面的内容完全复制,并粘贴到C:\Users\<您的系统登录名\.ssh\authorized_keys
文件中(如果不存在,请手动在该目录下创建同名文件,请注意无后缀名)。提示- 请确保
authorized_keys
文件的权限主体仅为 SYSTEM、Administrators、您当前登录系统的用户,否则会导致连接失败。您可以通过如下方法查看文件权限:- 右键单击
C:\Users\<您的系统登录名>\.ssh\
目录下的authorized_keys
文件,单击属性。 - 单击安全页签,查看组或用户名(G)下方框内的权限主体。如果有多余主体,则需要手动删除。
- 右键单击
- 删除权限主体的方式(接查看文件权限操作):
- 单击安全页签右下方的高级,单击禁用继承,在弹出窗口中,单击将已继承的权限转换为此对象的显式权限。
- 选中权限条目中不需要的条目,单击删除,确保剩余的权限主体为 SYSTEM、Administrators、您当前登录系统的用户,单击确定。
- 请确保
步骤四:在 NineData 控制台添加数据源
登录 NineData 控制台。
在左侧导航栏,单击数据源管理>数据源。
在创建数据源页面,根据下表配置参数。
参数 说明 数据源名称 输入数据源的名称,为了方便后续查找和管理,请尽量使用有意义的名称。 数据源位置 选择公网/自建/他云。 环境 根据该数据源的实际业务用途进行选择,作为数据源的环境标识。默认提供生产和开发环境,同时支持您创建自定义环境。
说明:在组织模式下,数据库环境还可应用于权限策略管理,例如,默认情况下的生产环境管理员角色仅支持访问生产环境下的数据源,无法访问其他环境的数据源。更多信息,请参见管理角色。数据库类型 选择 MySQL。 连接方式 选择 SSH Tunnel 连接。 SSH 主机 输入目标数据源所在服务器的 IP 或者域名,以及对应的端口号(SSH 服务的默认端口号为 22)。
说明:您的服务器 IP 地址必须是公网地址。SSH 认证方式 - 密码认证:通过 SSH 用户名(即服务器的登录名)和密码(即服务器的登录密码)进行连接。
- 密钥认证(推荐):通过 SSH 用户名和密钥文件进行连接,该选项需要您生成密钥文件。如何生成,请参见步骤三:生成 SSH Tunnel 密钥文件并将公钥加入到白名单文件。
SSH 用户名 输入目标数据源所在服务器的登录用户名。 密码 SSH 认证方式为密码认证时显示,输入目标数据源所在服务器的登录密码。
说明:输入完成后,您需要单击右侧的连接测试,可能出现如下两种结果:- 提示连接成功:表示 SSH Tunnel 已打通。
- 提示错误信息:表示连接失败,您需要根据提错误示排查故障原因并重试。
密钥文件 SSH 认证方式为密钥认证时显示,您需要单击上传文件上传私钥文件,即无后缀名的密钥文件。如果您还未创建,请参见步骤三:生成 SSH Tunnel 密钥文件并将公钥加入到白名单文件。 口令 SSH 认证方式为密钥认证时显示,输入生成密钥文件时设置的密码。如果您在生成密钥时未设置密码,此处请留空。
说明:输入完成后,您需要单击右侧的连接测试,可能出现如下两种结果:- 提示连接成功:表示 SSH Tunnel 已打通。
- 提示错误信息:表示连接失败,您需要根据提错误示排查故障原因并重试。
连接地址 数据源的连接地址和端口。
说明:由于您已通过 SSH Tunnel 连接到您数据源所在的服务器,因此,可以直接输入localhost
或127.0.0.1
,并填入目标数据源的端口号即可。用户名 登录数据源的用户名。 密码 登录数据源的用户名对应的密码。
说明:输入完成后,您需要单击右侧的连接测试,可能出现如下两种结果:- 提示连接成功:表示该数据源已可以正常访问。
- 提示错误信息:表示连接失败,您需要根据错误提示排查故障原因并重试。
接入地域 选择离您数据源所在地最近的地域,可有效降低网络延迟。 加密传输 是否使用 SSL 加密方式访问数据源。数据源如果强制 SSL 加密连接,则必须开启本开关,否则连接失败。
单击右侧的开关可开启或关闭加密传输。单击加密传输左侧的>可以展开详细配置。
说明:- 各类型数据源支持的选项不同,请以控制台为准。
- SSL 的配置方法请参见官方文档:配置 MySQL 加密连接
单击创建数据源,完成数据源的添加。