首页 > 数据库 >c# 通过SSH连接数据库或其他服务

c# 通过SSH连接数据库或其他服务

时间:2023-01-11 10:33:26浏览次数:53  
标签:c# 数据库 连接 SSH var new port ssh

需要安装ssh.net包

//ssh配置
var sshHost = "127.0.0.1";
var sshUser = "testUser";
var sshPwd = "testPassword";
var sshPort = 22;

//数据库连接
var server = "192.168.1.2";
uint dbPort = 15211;

//ssh连接信息
var auth = new PasswordAuthenticationMethod(sshUser, sshPwd);
ConnectionInfo conInfo = new ConnectionInfo(sshHost, sshPort, sshUser, auth);
try
{
  //ssh客户端,用using便于资源释放
  using (SshClient client = new SshClient(conInfo))
  {
    //获取本机ip环回地址 一般是127.0.0.1
    var local = IPAddress.Loopback.ToString();
    //端口转发
    /*
    *lcoal 本地绑定ip
    *dbPort 本地绑定端口
    *server 数据库server
    *1521 服务器上数据库的端口
    *
    */
    ForwardedPortLocal port = new ForwardedPortLocal(local, dbPort, server, 1521);
    client.Connect();
    if (!client.IsConnected)
    {
      Console.WriteLine("ssh连接失败");
    }
    //给客户端追加需要转发的端口信息
    client.AddForwardedPort(port);
    //启动
    port.Start();
    /*
     * 重点,当我们转发端口之后一定需要将我们转发之后的host和port把MysqlBuilder中的Server和Port替换掉。
     * 否则会报Unable to connect to any of the specified MySQL hosts.
     */
    //connBuilder.Port = port.BoundPort;//本地绑定ip
    //connBuilder.Server = port.BoundHost;//本地绑定ip
    //连接字数据库 - 可以更换成其他连接方式 - 此处用的是sqlsugar
    var sqlSugarClient = new SqlSugarScope(new ConnectionConfig()
    {
        ConnectionString = $"Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = {port.BoundHost})(PORT = {port.BoundPort})))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = TEST)));User ID=dbUser;Password=password;",
        DbType = DbType.Oracle,
        IsAutoCloseConnection = true,
        InitKeyType = InitKeyType.Attribute
    });

    sqlSugarClient.Open();

    var data = sqlSugarClient.SqlQueryable<dynamic>("select * from t_test_table where rownum")?.ToList();

    sqlSugarClient.Close();
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

[参考]
C#通过ssh连接Mysql数据库
C#通过SSH连接MySql
Connection to MySQL from .NET using SSH.NET Library

标签:c#,数据库,连接,SSH,var,new,port,ssh
From: https://www.cnblogs.com/ives/p/17043056.html

相关文章

  • c++重要的概念部分
    1.const修饰指针#include<iostream>usingnamespacestd;intmain(){//1、const修饰指针指针常量inta=10;intb=20;int*constp=&a;//指针......
  • Visual Paradigm 顾客旅程地图 (Customer Journey Map)
    (illustratedbyVisualParadigm) 若您是拥有十万会员数的企业,1%的不满意度代表有一千人不满于服务,在现今的网络世界里,这一千人可能会带来严重的客户抱怨与无法预期的企业......
  • Oracle分页查询出现重复数据的解决方法
    在使用MybatisPlus分页功能时发现:前端查询第一页是没问题的,但是向后查询的时候数据始终是第一页的查询第一页的时候发现没有任何问题往后查询,比如查询第二页时数据......
  • 【多用户】k8s多用户配置 kubeconfig
    K8S集群中的认证、授权与kubeconfig一、kubeconfig介绍-[appuser@k8s-master-1~]$cat/etc/kubernetes/kubeconfigapiVersion:v1kind:Configclusters:-name:shj......
  • docker 操作常见问题
    容器操作常见问题删除容器镜像dockerrmi0256c63af7db发生错误Errorresponsefromdaemon:conflict:unabletodelete0256c63af7db(mustbeforced)-imageis......
  • 增加ceph mon节点
    增加cephmon节点随便找一台正在运行的mon节点上修改ceph.conf,增加相应的moninitialmembers与monhost,不再赘述。然后同步到所有节点。可使用如下命令进行远程同步(前提......
  • [GUET-CTF2019]zips
    [GUET-CTF2019]zips打开附件获得了一个压缩包222.zip继续打开111.zip需要密码于是我用ARCHPR直接爆破密码723456打开111.zip需要密码于是拖入010发现伪加密把09......
  • CAN总线基础
    CAN总线(一)原文出处:http://www.cnblogs.com/jacklu/p/4729638.html嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对......
  • conda安装tensorflow总结
    创建conda环境condacreate--nameyourEnvpython=3.7安装cuda,cudnn版本对应图先安装对应版本cudatoolkitcondainstallcudatoolkit=再安装cudnncondain......
  • Educational Codeforces Round 141
    目录写在前面ABCDEF写在最后写在前面比赛地址:https://codeforces.com/contest/1783。CF车队翻车咯,本来上大分,喜提skippedA如果所有数均相等则无解。否则先降序排序......