首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于C#的SSH.net端口转发

基于C#的SSH.net端口转发
EN

Stack Overflow用户
提问于 2014-12-11 10:52:42
回答 2查看 10.9K关注 0票数 0

我试图在C#程序中使用SSH.NET执行以下操作:

ssh -NfD 1080 username@remote.com

下面是我编写的代码:

代码语言:javascript
运行
复制
using (var client = new SshClient("remote.com", "username", "password"))
{
    client.Connect();
    var port = new ForwardedPortLocal("localhost", 1080, "remote.com", 1080);
    client.AddForwardedPort(port);

    port.Exception += delegate(object sender, ExceptionEventArgs e)
    {
         Console.WriteLine(e.Exception.ToString());
    };
    port.Start();
}
Console.ReadKey();

我通过这个隧道连接到一个OpenVPN服务器。当我使用命令行时,它工作得很好,但是当我使用C#程序时,它就像隧道不能工作一样,即使我可以通过C#程序向连接到的服务器发送命令。知道吗?

EN

回答 2

Stack Overflow用户

发布于 2014-12-11 12:05:00

正如我在注释中建议的那样,我认为您可以尝试以这种方式使用client.RunCommand方法执行命令

代码语言:javascript
运行
复制
client.RunCommand("some command");
票数 0
EN

Stack Overflow用户

发布于 2016-12-15 06:53:43

应该将Console.ReadKey();放在使用块中,以确保不释放SshClient实例。

代码语言:javascript
运行
复制
static void Main(string[] args)
    {
        using (var client = new SshClient("host", "name", "pwd"))
        {
            client.Connect();
            var port = new ForwardedPortDynamic(7575);
            client.AddForwardedPort(port);

            port.Exception += delegate (object sender, ExceptionEventArgs e)
            {
                Console.WriteLine(e.Exception.ToString());
            };
            port.Start();
            Console.ReadKey();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27421094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档