我试过搜索上面的内容并找到了SSH.NET,但我不确定:
我有一个带有SFTP的客户端 - 他使用像FileZilla这样的普通第三方工具连接到该客户端。
我有凭据等,需要从该SFTP下载文件。 对我来说不幸的是,SFTP需要一个p12证书(我有),我不知道如何使用。我还没有和SFTP合作过。 连接是:“互动”
对于“普通”FTP,我只需获取FtpRequest的响应流,并将其信息转换为我需要的信息。
问题:如何使用C12建立与SFTP的连接,而无需购买其中一个商业第三方库?
我会感谢,无论是直接提示,还是阅读该主题的材料。
答案 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证书(这种配置是可能的,但几乎从不使用)。您无法使用开源库获得此功能。