通过C#进行SSH连接

时间:2015-03-19 14:27:09

标签: c# ssh

就是这种情况。我有一台Windows机器和一台Linux机器。这两台机器之间有一个共享驱动器(映射到Q :)。我试图弄清楚如何在C#的Q:驱动器(共享驱动器)上创建SSH会话。我正在尝试使用SharpSsh库来执行此操作。

这是我到目前为止所做的,但它给了我一个错误:

try
{
    ssh = new SshStream(host, username, password);

    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());      // Blocking here

    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());
    }
}
catch(Exception e)
{
    Console.WriteLine(e.Message);
}

if(ssh != null)
{
    ssh.Close();
}

我添加了Tamir.SharpSSH.dll作为项目的参考,我在项目中使用它。 SharpSSH还包含另外两个dll,我是否需要将它们添加到参考文献中?我见过的例子只有Tamir.SharpSSH.dll作为参考。

我不确定如何在正确的位置启动连接,以及如何正确地向ssh提交命令。

更新

我意识到我需要在结束程序之前关闭SSH连接。该错误不再存在,但是,我仍然没有从我的" ls"命令。

更新

我用现在的内容更新了代码。看起来ssh.ReadResponse()是阻塞的,这让我相信服务器没有响应。这是对的吗?

0 个答案:

没有答案