使用C#中的p12证书从SFTP下载文件

时间:2014-09-23 23:31:59

标签: c# .net ssh certificate sftp

我试过搜索上面的内容并找到了SSH.NET,但我不确定:

  1. 如果它适合我​​的情况。
  2. 如何以我需要它的方式使用它。
  3. 我有一个带有SFTP的客户端 - 他使用像FileZilla这样的普通第三方工具连接到该客户端。

    我有凭据等,需要从该SFTP下载文件。 对我来说不幸的是,SFTP需要一个p12证书(我有),我不知道如何使用。我还没有和SFTP合作过。 连接是:“互动”

    对于“普通”FTP,我只需获取FtpRequest的响应流,并将其信息转换为我需要的信息。

    问题:如何使用C12建立与SFTP的连接,而无需购买其中一个商业第三方库?

    我会感谢,无论是直接提示,还是阅读该主题的材料。

2 个答案:

答案 0 :(得分:1)

您确定要使用SFTP吗?我从未见过有人使用P12密钥和SSH / SFTP。也许您误将SFTP与FTPS [FTP over TLS / SSL]错误?

无论如何,NET.SSH库仅支持OpenSSH和ssh.com私钥文件格式。因此,您需要将P12密钥转换为其中任何一个。

引自Extract public/private key from PKCS12 file for later use in SSH-PK-Authentication

  

您可以使用以下命令从a中提取公钥/私钥   PKCS#12容器:

     
      
  • PKCS#1私钥

    openssl pkcs12 -in yourP12File.pfx -nocerts -out privateKey.pem
    
  •   
  • 证书:

    openssl pkcs12 -in yourP12File.pfx -clcerts -nokeys -out publicCert.pem
    
  •   

答案 1 :(得分:0)

首先,您似乎将SFTP与FTP-over-SSL混淆。这些是two different protocols。从您的问题看来,您需要FTP-over-SSL。

在需要只下载文件的简单情况下,.NET的FtpWebRequest类将起作用。在更复杂的情况下,需要第三方库。

如果您需要处理SFTP,情况会更复杂。 SSH通常不使用X.509证书(这种配置是可能的,但几乎从不使用)。您无法使用开源库获得此功能。