配置 SSH 和 SSL
最后修改时间:2023 年 9 月 20 日为了使与数据库的连接更加安全,某些服务需要使用 SSH 或 SSL。
SSL协议
以下过程描述了适合大多数数据库的 SSL 配置。对于某些数据库,您需要使用另一种方法才能成功连接。您可以在 DataGrip 文档中查看Cassandra和Heroku Postgres的配置示例。
使用 SSL 连接到数据库
打开数据源属性。您可以使用以下选项之一打开数据源属性:
在 数据库工具窗口(视图|工具窗口| 数据库)中,单击数据源属性图标。
按。ShiftEnter
在“数据源”选项卡上,选择要修改的数据源。
单击SSH/SSL选项卡并选中使用 SSL复选框。
在CA 文件字段中,导航到 CA 证书文件(例如mssql.pem)。
您可以将证书文件字段留空并使用信任库从其包含的证书中获取所需的证书。为此,请勾选“使用信任库”复选框并选择您要使用的信任库。
IDE:使用 IDE 接受的证书。您可以在工具 |中添加新的接受的证书。服务器证书。
JAVA:使用 JAVA 信任库证书。
系统:使用系统信任库证书。
在客户端证书文件字段中,导航到客户端证书文件(例如client-cert.pem)。
在客户端密钥文件字段中,导航到客户端密钥文件(例如client-key.pem)。
从模式列表中,选择验证模式:
要求
如果提供了证书,则验证服务器是否识别客户端证书。
验证CA
如果提供了证书,则验证服务器是否识别客户端证书。
通过检查证书链直至存储在客户端上的根证书来验证服务器。
全面验证
如果提供了证书,则验证服务器是否识别客户端证书。
通过检查证书链直至存储在客户端上的根证书来验证服务器。
验证服务器主机以确保其与服务器证书中存储的名称匹配。
如果任一证书无法验证,SSL 连接就会失败。
要确保与数据源的连接成功,请单击“测试连接”。
笔记
建议使用PEM证书。
笔记
对于自签名证书以及在某些情况下使用受信任根实体颁发的证书,您在使用最新的 JDBC 驱动程序版本时可能会遇到错误。如果您的 Java 密钥库不接受证书链,SSL 连接可能会失败。作为临时解决方案,尝试降级 JDBC 驱动程序(例如,对于 MySQL 连接器,需要切换到 5.1.40 版本。)
禁用与数据库的 SSL 连接
打开数据源属性。您可以使用以下选项之一打开数据源属性:
在 数据库工具窗口(视图|工具窗口| 数据库)中,单击数据源属性图标。
按。ShiftEnter
在“数据源”选项卡上,选择要修改的数据源。
单击SSH/SSL选项卡并清除使用 SSL复选框。
单击“应用”。
从其他数据源复制 SSL 设置
如果您为一个数据源配置了 SSL 设置,则可以将它们复制到另一数据源。
打开数据源属性。您可以使用以下选项之一打开数据源属性:
在 数据库工具窗口(视图|工具窗口| 数据库)中,单击数据源属性图标。
按。ShiftEnter
在“数据源”选项卡上,选择要修改的数据源。
单击SSH/SSL选项卡并选中使用 SSL复选框。
单击复制自...链接并选择要复制的配置。
SSH
Secure Shell 或 SSH 是一种网络协议,用于加密客户端和服务器之间的连接。
在 PyCharm 中,您可以通过以下方式之一创建 SSH 连接:
使用 PyCharm SSH 隧道。IDE 将使用您设置的 SSH 配置创建 SSH 隧道。
PyCharm SSH 隧道
PyCharm 可以根据您设置的 SSH 配置创建 SSH 隧道。要访问 SSH 配置设置,请按打开 IDE 设置并选择“工具”|“ SSH 配置。CtrlAlt0S
要对数据源使用 SSH 隧道,请选中“数据源和驱动程序”对话框 ( )的 SSH/SSL选项卡中的“使用 SSH 隧道”复选框。ShiftEnter
笔记
在大多数情况下,在SSH/SSL选项卡中设置 SSH 配置后,不需要修改常规选项卡设置,因为 PyCharm 将连接到 SSH 隧道的本地端。例外情况是,当您手动创建 SSH 隧道时,在这种情况下,您需要在“常规”选项卡上设置为“主机”。
localhost
连接后,当服务器建立与数据库的连接时,SSH 隧道主机名将在具有 SSH 服务器的计算机上解析。
所有创建的 SSH 连接都在项目中的所有数据源之间共享。如果您不想在项目之间共享连接,请在 SSH 连接设置中选中仅对此项目可见复选框。
使用 SSH 连接到数据库
打开数据源属性。您可以使用以下选项之一打开数据源属性:
在 数据库工具窗口(视图|工具窗口| 数据库)中,单击数据源属性图标。
按。ShiftEnter
选择要更改连接设置的数据源配置文件。
单击SSH/SSL选项卡并选中使用 SSH 隧道复选框。
单击添加 SSH 配置按钮 ( )。
在SSH对话框中,单击“添加”按钮。
如果您不想在项目之间共享配置,请选中仅对此项目可见复选框。
在Host、Username和Port字段中,指定您的连接详细信息。
从身份验证类型列表中,您可以选择身份验证方法:
密码:使用密码访问主机。要在 PyCharm 中保存密码,请选中“保存密码”复选框。
密钥对(OpenSSH 或 PuTTY):通过密钥对使用SSH 身份验证。要应用此身份验证方法,您必须在客户端计算机上拥有私钥并在远程服务器上拥有公钥。PyCharm 支持使用OpenSSH实用程序生成的私钥。
指定存储私钥的文件的路径,并在相应字段中输入密码(如果有)。要让 PyCharm 记住密码,请选中“保存密码”复选框。
OpenSSH 配置和身份验证代理:使用管理 SSH 密钥的凭据帮助程序应用程序,例如ssh-agent。
单击“确定”确认新的 SSH 配置设置。
在“数据源和驱动程序”对话框的“本地端口”字段中,指定要从中转发连接的本地端口号。否则,PyCharm 会动态选择端口。
提示
有关使用 SSH 密钥的更多信息,请参阅生成新的 SSH 密钥并将其添加到 ssh-agent教程。
禁用与数据库的 SSH 连接
打开数据源属性。您可以使用以下选项之一打开数据源属性:
在 数据库工具窗口(视图|工具窗口| 数据库)中,单击数据源属性图标。
按。ShiftEnter
选择要更改连接设置的数据源配置文件。
单击SSH/SSL选项卡并清除使用 SSH 隧道复选框。
单击“应用”。
手动创建 SSH 隧道
下载并运行最新版本的 PuTTY SSH 和 Telnet 客户端(从https://www.putty.org/下载客户端)。
在PuTTY 配置对话框中,导航到连接 | SSH | 授权。
在用于身份验证的私钥文件字段中,指定私钥文件的路径,然后单击打开。
在命令行窗口中,指定用于 SSH 隧道的用户名,然后按。不要关闭命令行窗口。Enter
在 数据库工具窗口(视图 | 工具窗口 | 数据库)中,单击工具栏上的数据源属性图标。
选择要更改连接设置的数据源配置文件。
单击SSH/SSL选项卡并选中使用 SSH 隧道复选框。
从身份验证类型列表中,选择OpenSSH 配置和身份验证代理。
在代理主机、代理用户和端口字段中,指定连接详细信息。
要确保与数据源的连接成功,请单击“测试连接”。
Pageant 是 PuTTY、PSCP、PSFTP 和 Plink 的 SSH 身份验证代理。Pageant 存储您的私钥,只要它正在运行,它就会向 PuTTY 或 PyCharm 等其他工具提供解锁的私钥。您可以在 Windows 任务栏中找到 Pageant 图标。
下载最新版本的Pageant(从https://www.putty.org/下载客户端)。
在 Windows 任务栏中,右键单击 Pageant 图标并选择添加键。
在“选择私钥文件”对话框中,导航到私钥文件(PPK 文件)并单击“打开”。
(可选)输入私钥密码并按。Enter
在 数据库工具窗口(视图 | 工具窗口 | 数据库)中,单击工具栏上的数据源属性图标。
选择要更改连接设置的数据源配置文件。
单击SSH/SSL选项卡并选中使用 SSH 隧道复选框。
从身份验证类型列表中,选择OpenSSH 配置和身份验证代理。
在代理主机、代理用户和端口字段中,指定连接详细信息。
要确保与数据源的连接成功,请单击“测试连接”。
在命令行中运行 ssh-agent 的所有命令。
确保 ssh-agent 正在运行。
ssh-agent
将您的密钥添加到代理(在以下示例中,密钥路径为~
/.ssh )。/id_rsa ssh-add ~/.ssh/id_rsa
(可选)在 macOS 上,您可以
-K
向命令添加选项ssh-add
以将密码短语存储在钥匙串中。在 macOS Sierra 及更高版本上,您需要使用以下文本在~ /.ssh/中创建配置文件:Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
如果.ssh目录中有其他私钥,请
IdentityFile
为每个密钥添加一行。例如,如果第二个密钥的名称为id_ed25519,请添加IdentityFile ~/.ssh/id_ed25519
第二个私钥的附加行。列出所有添加的键。
ssh-add -L
在 数据库工具窗口(视图 | 工具窗口 | 数据库)中,单击工具栏上的数据源属性图标。
选择要更改连接设置的数据源配置文件。
单击SSH/SSL选项卡并选中使用 SSH 隧道复选框。
从身份验证类型列表中,选择OpenSSH 配置和身份验证代理。
在代理主机、代理用户和端口字段中,指定连接详细信息。
要确保与数据源的连接成功,请单击“测试连接”。
感谢您的反馈意见!