2017-02-24 407 views
0

假設我有與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方法引發錯誤,所以我在代碼之外尋找錯誤。

+0

有問題的SCP客戶端?也許嘗試一個不同的?你可以通過C#與WinSCP集成,在他們的網站上有一個客戶端庫。 (請注意,您必須安裝winscp才能使用它)。另外請記住,通過SSH進行文件傳輸的協議不同,您可能正在尋找支持SFTP的客戶端(不僅僅是SCP) – caesay

+0

您的SCP客戶端故障是什麼意思?據我所知,SSH.net是.NET中最受推薦的SSH/SCP庫之一。此外,我無法改變這一點(我不是這個代碼的唯一用戶)。 – Asunez

+0

很難想象服務器如何在允許ssh的同時給scp認證失敗。 scp連接只是一個ssh連接,客戶端請求服務器在認證後運行scp。在認證過程中,服務器甚至不知道客戶端將會執行scp。你說你包含的代碼不是實際的代碼。您應該將代碼縮減爲一個能夠證明問題的獨立程序。 – Kenster

回答

0

顯然原因不在SSH.net庫中,而是在用於登錄到網絡共享的憑據中。對於任何有同樣問題的人,通過Windows存儲憑據(在登錄提示符下選中「記住我的用戶名和密碼」)到網絡共享中解決了問題。一次性訪問不會。也許映射驅動器也可以,但我沒有檢查。

相關問題