2014-09-19 36 views
1

我正在開發使用C#(.NET Assembly)的SFTP WinSCP客戶端。在我的測試環境中,我是通過密碼驗證完成的。以下是我的會話選項:如何使用.crt文件進行SSH公鑰認證

// Setup session options 
SessionOptions sessionOptions = new SessionOptions { 
    Protocol = Protocol.Sftp, 
    HostName = "example.com", 
    UserName = "user", 
    Password = "mypassword", 
    SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" 
}; 

但是真實環境沒有用戶密碼。服務器管理員提供擴展名爲「.crt」的公用密鑰

因此,使用此公鑰如何更改我的程序(SessionOptions)?

這個細節足以執行這個實現嗎?

預覽CRT文件

enter image description here

+0

你確定你應該使用SFTP嗎? '.crt'文件看起來像一個證書,與TLS/SSL(可能FTPS = FTP over TLS/SSL)一起使用,而不是SSH(SFTP)。你也需要一個私鑰,而不是公鑰(但'.crt'可能包含兩者)。你應該生成你的私人密鑰,你不應該從管理員那裏得到它。因此,另一個混淆可能是它是服務器的證書,而不是用於驗證的帳戶證書。 – 2014-09-19 07:21:54

+0

謝謝Martin ...你能給我一個如何做SFTP公鑰認證的步驟嗎? – Suravi 2014-09-19 07:30:07

+0

不,除非你至少回答我上面的一些問題。我沒有見過'.crt'文件用於SFTP公鑰認證。打開文件時(文本編輯器中)文件是什麼樣的?您是否從管理員那裏獲得有關如何使用它的任何信息/文檔(即使是針對其他客戶端/工具)? – 2014-09-19 07:32:40

回答

1

從擴展的,看起來和你收到的文件大小,我相信這是服務器的證書形式的公鑰。

首先,服務器的公鑰只能用來驗證你連接的服務器實際上是你想連接的服務器(即沒有人在中間的攻擊正在進行)。

其次,密鑰的證書格式從不使用SSH。它與TLS/SSL一起使用,例如FTPS(基於TLS/SSL的FTP)或HTTPS。

我想說,你和服務器管理員之間有一些很大的誤解。

如果您想了解更多詳細信息,最好在SuperUserServerFault上詢問,因爲這看起來不像是一個編程問題。

+0

謝謝Martin.using winSCP是否有任何方法來公鑰驗證? (沒有密碼)。 – Suravi 2014-09-19 08:52:44

+0

當然,請使用['SessionOptions.SshPrivateKeyPath'](http://winscp.net/eng/docs/library_sessionoptions)。但爲此,您首先需要確保連接到SSH/SFTP服務器,並且您需要擁有私鑰並在服務器上註冊公鑰。請參閱[設置SSH公鑰認證](http://winscp.net/eng/docs/guide_public_key) – 2014-09-19 08:55:19

+0

Martin可以給我一種方法來執行像這樣的公鑰認證.http://winscp.net/eng/ docs/ssh#authentication_in_ssh – Suravi 2014-09-19 08:58:37