就是这种情况。我有一台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()是阻塞的,这让我相信服务器没有响应。这是对的吗?