SharpSSH .NET Library:无法从.NET连接到Linux(Debian)

我试图用SharpSSH连接到Linux,但是我无法连接到Linux。 我想从我的.NET应用程序运行一些Linux命令。

安装说明:

SharpSsh – 通过SSH连接到UNIX的.NET库
– 创build帐户@ codeproject.com
( http://www.codeproject.com/Articles/11966/sharpSsh-A-Secure-Shell-SSH-library-for-NET (下载演示项目和二进制文件/ dll文件)
– 复制到“SharpSsh”文件夹中

我正在运行此下载附带的sharpSshTest控制台应用程序。 当我通过Putty手动SSH(端口22)到Linux相同的主机/login名/密码,我可以很好地连接。 当通过.NET连接相同的主机和证书时,我得到了Tamir.sharpSsh .NET库中引发的exception。

Unix发行版和版本:

$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 5.0.9 (lenny) Release: 5.0.9 Codename: lenny 

堆栈跟踪:

  at Tamir.SharpSsh.jsch.Session.connect(Int32 connectTimeout) at Tamir.SharpSsh.jsch.Session.connect() at Tamir.SharpSsh.SshStream..ctor(String host, String username, String password) at sharpSshTest.sharpSshTest.SshStream() in C:\Source\{path}\selenium_references\sharpSsh_Demo\sharpSsh.demo\sharpSshTest.cs:line 76 

sharpSshTest.cs中的第76行:

 SshStream ssh = new SshStream(host, user, pass); 

e.Message的价值:

 {"verify: False"} 

这里的代码,如果有帮助:

 using System; using Tamir.SharpSsh; using System.Threading; namespace sharpSshTest { /// <summary> /// Summary description for sharpSshTest. /// </summary> public class sharpSshTest { static string host, user, pass; public static void Main() { PrintVersion(); Console.WriteLine(); Console.WriteLine("1) Simple SSH session example using SshStream"); Console.WriteLine("2) SCP example from local to remote"); Console.WriteLine("3) SCP example from remote to local"); Console.WriteLine(); INPUT: int i=-1; Console.Write("Please enter your choice: "); try { i = int.Parse( Console.ReadLine() ); Console.WriteLine(); } catch { i=-1; } switch(i) { case 1: SshStream(); break; case 2: Scp("to"); break; case 3: Scp("from"); break; default: Console.Write("Bad input, "); goto INPUT; } } /// <summary> /// Get input from the user /// </summary> public static void GetInput() { Console.Write("Remote Host: "); host = Console.ReadLine(); Console.Write("User: "); user = Console.ReadLine(); Console.Write("Password: "); pass = Console.ReadLine(); Console.WriteLine(); } /// <summary> /// Demonstrates the SshStream class /// </summary> public static void SshStream() { GetInput(); try { Console.Write("-Connecting..."); SshStream ssh = new SshStream(host, user, pass); Console.WriteLine("OK ({0}/{1})",ssh.Cipher,ssh.Mac); Console.WriteLine("Server version={0}, Client version={1}", ssh.ServerVersion, ssh.ClientVersion); Console.WriteLine("-Use the 'exit' command to disconnect."); Console.WriteLine(); //Sets the end of response character ssh.Prompt = "#"; //Remove terminal emulation characters ssh.RemoveTerminalEmulationCharacters = true; //Reads the initial response from the SSH stream Console.Write( ssh.ReadResponse() ); //Send commands from the user while(true) { string command = Console.ReadLine(); if (command.ToLower().Equals("exit")) break; //Write command to the SSH stream ssh.Write( command ); //Read response from the SSH stream Console.Write( ssh.ReadResponse() ); } ssh.Close(); //Close the connection Console.WriteLine("Connection closed."); } catch(Exception e) { Console.WriteLine(e.Message); } } /// <summary> /// Demonstrates the Scp class /// </summary> /// <param name="cmd">Either "to" or "from"</param> public static void Scp(string cmd) { GetInput(); string local=null, remote=null; if(cmd.ToLower().Equals("to")) { Console.Write("Local file: "); local = Console.ReadLine(); Console.Write("Remote file: "); remote = Console.ReadLine(); } else if(cmd.ToLower().Equals("from")) { Console.Write("Remote file: "); remote = Console.ReadLine(); Console.Write("Local file: "); local = Console.ReadLine(); } Scp scp = new Scp(); scp.OnConnecting += new FileTansferEvent(scp_OnConnecting); scp.OnStart += new FileTansferEvent(scp_OnProgress); scp.OnEnd += new FileTansferEvent(scp_OnEnd); scp.OnProgress += new FileTansferEvent(scp_OnProgress); try { if(cmd.ToLower().Equals("to")) scp.To(local, host, remote, user, pass); else if(cmd.ToLower().Equals("from")) scp.From(host, remote, user, pass,local); } catch(Exception e) { Console.WriteLine(e.Message); } Console.ReadLine(); } static void PrintVersion() { try { System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(typeof(Tamir.SharpSsh.SshStream)); Console.WriteLine("sharpSsh v"+asm.GetName().Version); } catch { Console.WriteLine("sharpSsh v1.0"); } } #region SCP Event Handlers static ConsoleProgressBar progressBar; private static void scp_OnConnecting(int transferredBytes, int totalBytes, string message) { Console.WriteLine(); progressBar = new ConsoleProgressBar(); progressBar.Update(transferredBytes, totalBytes, message); } private static void scp_OnProgress(int transferredBytes, int totalBytes, string message) { progressBar.Update(transferredBytes, totalBytes, message); } private static void scp_OnEnd(int transferredBytes, int totalBytes, string message) { progressBar.Update(transferredBytes, totalBytes, message); progressBar=null; } #endregion SCP Event Handlers } } 

Solutions Collecting From Web of "SharpSSH .NET Library:无法从.NET连接到Linux(Debian)"

看起来这个项目不好。 这里下载了一个新的,当你打开Visual Studio解决方案文件时,它由新的“SharpSSH”类库项目的实际源代码和名为“Examples”的控制台应用程序组成。

http://www.tamirgal.com/blog/page/SharpSSH.aspx#news

当启动“Examples”控制台应用程序,它的工作!

 SharpSSH-1.1.1.13 JSch Smaples: ============= 1) Shell.cs 2) AES.cs 3) UserAuthPublicKey.cs 4) Sftp.cs 5) KeyGen.cs 6) KnownHosts.cs 7) ChangePassphrase.cs 8) PortForwardingL.cs 9) PortForwardingR.cs 10) StreamForwarding.cs 11) Subsystem.cs 12) ViaHTTP.cs SharpSSH Smaples: ================= 13) SSH Shell sample 14) SSH Expect Sample 15) SSH Exec Sample 16) SSH File Transfer 17) Exit Please enter your choice: 13 Enter Remote Host: {type host here} Enter Username: testjobs Use publickey authentication? [Yes|No] :No Enter Password: helloworld Connecting...OK Linux gmqa 2.6.32-5-686-bigmem #1 SMP Thu Apr 7 22:17:10 UTC 2011 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Mar 6 09:58:32 2012 from {machine name} testjobs@gmqa:~$