如何使用C#打开putty会话

时间:2010-09-08 14:48:32

标签: c# ssh

我想知道如何在Visual Basic express中使用C#打开putty。然后通过ssh会话执行命令。

3 个答案:

答案 0 :(得分:3)

我最近不得不使用WinSCP做类似的事情,我采用的方式是重定向标准输入和输出启动过程。如果Putty使用标准输入/输出,您可能可以使用相同的方法。

WinSCP页面上的sample非常好,所以我建议从那开始,这是关于类似内容的代码项目文章:How to redirect Standard Input/Output of an application

答案 1 :(得分:0)

您可以将plink.exe用于SSH,将pscp.exe用于SCP。 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

下载两个文件,然后将它们复制到您的解决方案中。然后在“属性”下选择:如果更新则复制。

 // SCP
 var process = new Process();
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = Directory.GetCurrentDirectory() + $@"\pscp.exe";
        processStartInfo.Arguments = $@"-P 22 -pw password filepath.zip root@host:/path ";
        processStartInfo.UseShellExecute = false;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.CreateNoWindow = true;
        process.StartInfo = processStartInfo;
        process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.ErrorDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();
        Console.WriteLine(process.ExitCode);

        // SSH
        process = new Process();
        processStartInfo = new ProcessStartInfo();
        processStartInfo.FileName = Directory.GetCurrentDirectory() + $@"\plink.exe";  
        processStartInfo.Arguments = $@"-P 22 -pw password root@host command";
        processStartInfo.UseShellExecute = false;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.CreateNoWindow = true;
        process.StartInfo = processStartInfo;
        process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.ErrorDataReceived += (sender, args) => Console.WriteLine(args.Data);
        process.Start();
        process.BeginOutputReadLine();
        process.BeginErrorReadLine();
        process.WaitForExit();

答案 2 :(得分:-2)

您实际需要的是.NET的SSH组件,能够提供对远程主机的shell和命令通道访问。 Shell就是你用PuTTY看到的。您“键入”请求并获得一些响应,然后您需要解析这些响应以从命令提示符中分离响应。命令通道是指逐个发送命令并且只返回响应。你不需要解析任何东西(除了处理实际的响应)。简单组件不能在一个会话中发送多个命令。

您可以使用我们的SSH component for .NET,它提供shell和命令通道,并支持多种类型的身份验证(因此服务器使用的身份验证类型无关紧要 - 我们的组件支持它)。