假設我有與SSHClient和SCPClient性質的連接類從SSH.net
庫(由Renci):SSH.net - SSH連接工作,但SCP返回「不正確的用戶名和密碼」
public class SecureConn
{
public SshClient Ssh {get; set;}
public ScpClient Scp {get; set;}
public SecureConn(string host, string usr, string pwd)
{
this.Ssh = new SshClient(host, usr, pwd);
this.Scp = new ScpClient(host, usr, pwd);
}
...
}
當我嘗試用SSH運行命令 - 一切正常。但是,當我嘗試使用this.Scp.Upload()
(注意構造函數中的相同憑據)將文件從網絡共享上載到Linux服務器時,我得到的System.IO.Exception返回「不正確的用戶名或密碼」。什麼可能是得到這個錯誤的原因?
是否需要安裝任何軟件才能在Windows上正常工作?或者它是以某種方式生成此消息的網絡共享源?也許Linux服務器需要爲SCP設置不同的密碼?
我用WinSCP檢查過,我可以完美地連接它並複製文件。
注意:以上只是一個代碼示例,而不是實際代碼,但工作流程基本相同。我很肯定這是Renci的ScpClient.Upload方法引發錯誤,所以我在代碼之外尋找錯誤。
有問題的SCP客戶端?也許嘗試一個不同的?你可以通過C#與WinSCP集成,在他們的網站上有一個客戶端庫。 (請注意,您必須安裝winscp才能使用它)。另外請記住,通過SSH進行文件傳輸的協議不同,您可能正在尋找支持SFTP的客戶端(不僅僅是SCP) – caesay
您的SCP客戶端故障是什麼意思?據我所知,SSH.net是.NET中最受推薦的SSH/SCP庫之一。此外,我無法改變這一點(我不是這個代碼的唯一用戶)。 – Asunez
很難想象服務器如何在允許ssh的同時給scp認證失敗。 scp連接只是一個ssh連接,客戶端請求服務器在認證後運行scp。在認證過程中,服務器甚至不知道客戶端將會執行scp。你說你包含的代碼不是實際的代碼。您應該將代碼縮減爲一個能夠證明問題的獨立程序。 – Kenster