You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中配置带SSH(.ppk文件)的PostgreSQL连接字符串

用C#通过SSH密钥(.ppk)连接Linux上的PostgreSQL

Npgsql本身不直接支持SSH隧道连接,需要先通过SSH建立本地端口转发,再让Npgsql连接到本地转发的端口。以下是具体步骤:

1. 转换.ppk私钥为OpenSSH格式

大部分.NET SSH库只支持OpenSSH格式的私钥,需要用PuTTYgen转换:

  • 打开PuTTYgen,点击「Load」加载你的.ppk文件
  • 点击「Conversions」→「Export OpenSSH key」,保存为无扩展名的文件(比如id_rsa)
  • 如果.ppk有密码,记住这个密码,后续代码需要用到

2. 使用SSH.NET建立SSH隧道

先通过NuGet安装SSH.NET库(Install-Package SSH.NET),然后编写代码建立隧道并连接数据库:

using Renci.SshNet;
using Npgsql;

// SSH配置
string sshHost = "192.168.0.16";
string sshUser = "linux_ssh_username"; // Linux服务器的SSH登录用户名
string privateKeyPath = @"C:\Keys\id_rsa"; // 转换后的OpenSSH私钥路径
string privateKeyPass = "your_key_passphrase"; // 私钥密码(无则设为null)

// 端口转发配置:本地5433端口映射到服务器的5432(PostgreSQL端口)
int localForwardPort = 5433;
string pgServerLocalAddr = "127.0.0.1"; // 服务器本地的PostgreSQL地址
int pgServerPort = 5432;

// 建立SSH连接与端口转发
using var privateKeyFile = new PrivateKeyFile(privateKeyPath, privateKeyPass);
using var sshClient = new SshClient(sshHost, sshUser, privateKeyFile);
sshClient.Connect();

var forwardedPort = new ForwardedPortLocal("127.0.0.1", localForwardPort, pgServerLocalAddr, pgServerPort);
sshClient.AddForwardedPort(forwardedPort);
forwardedPort.Start();

// 连接PostgreSQL:目标地址改为本地转发端口
string connString = $"Host=127.0.0.1;Port={localForwardPort};Database=sale;Username=postgres;Password=123;SSL Mode=Require;Trust Server Certificate=true";
using var pgConn = new NpgsqlConnection(connString);
pgConn.Open();

// 执行数据库操作(示例)
using var cmd = new NpgsqlCommand("SELECT version();", pgConn);
var result = cmd.ExecuteScalar();
Console.WriteLine($"PostgreSQL版本:{result}");

// 关闭资源
pgConn.Close();
forwardedPort.Stop();
sshClient.Disconnect();

注意事项

  • 确保Linux服务器的SSH服务已开启,且你的公钥已添加到服务器用户的~/.ssh/authorized_keys文件中
  • 如果不想转换.ppk,也可以用PuTTY的plink.exe命令行建立隧道:
    plink.exe -i C:\path\to\your\key.ppk ssh_user@192.168.0.16 -L 5433:127.0.0.1:5432
    
    运行该命令后,C#程序直接连接本地5433端口即可,但这种方式依赖外部进程,不如代码集成灵活。

内容的提问来源于stack exchange,提问作者Mohsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:10:26