Скачать файл с SFTP с сертификатом p12 на С#

Я попытался найти вышеперечисленное и нашел SSH.NET, но я не уверен:

  1. Если это подходит для моего случая.
  2. Как использовать его так, как мне нужно, чтобы он работал.

У меня есть клиент с SFTP, к которому он подключается с помощью обычного стороннего инструмента, такого как FileZilla.

У меня есть учетные данные и т. д., и мне нужно загружать файлы с этого SFTP. К сожалению для меня, для SFTP требуется сертификат p12 (который у меня есть), который я не знаю, как использовать. Я еще не работал с SFTP. Соединение: "интерактивное"

Для «нормального» FTP я бы просто получил поток ответов FtpRequest и передал его информацию тому, что мне нужно.

Вопрос: Как использовать сертификат p12 для установки подключения к SFTP с помощью C#, не покупая одну из коммерческих сторонних библиотек?

Буду благодарен, как за прямые советы, так и за чтиво по теме.


person Aiolos    schedule 23.09.2014    source источник


Ответы (2)


Вы уверены, что хотите использовать SFTP? Я никогда не видел, чтобы кто-нибудь использовал ключ P12 с SSH/SFTP. Возможно, вы перепутали SFTP с FTPS [FTP через TLS/SSL]?

В любом случае, библиотека NET.SSH поддерживает только форматы файлов закрытого ключа OpenSSH и ssh.com. Поэтому вам нужно преобразовать ключ P12 в любой из них.

Цитата из Извлечь открытый/закрытый ключ из файла PKCS12 для последующего использования в SSH-PK-Authentication:

Вы можете использовать следующие команды для извлечения открытого/закрытого ключа из контейнера PKCS#12:

  • PKCS#1 Закрытый ключ

    openssl pkcs12 -in yourP12File.pfx -nocerts -out privateKey.pem
    
  • Сертификаты:

    openssl pkcs12 -in yourP12File.pfx -clcerts -nokeys -out publicCert.pem
    
person Martin Prikryl    schedule 24.09.2014

Прежде всего, вы, похоже, путаете SFTP с FTP-over-SSL. Это два разных протокола. Из вашего вопроса кажется, что вам нужен FTP-over-SSL.

В простых случаях, когда нужно просто скачать файл, подойдет класс FtpWebRequest .NET. В более сложных случаях требуются сторонние библиотеки.

Если вам нужно иметь дело с SFTP, ситуация сложнее. SSH обычно не работает с сертификатами X.509 (такая конфигурация возможна, но почти не используется). Вы не получите эту функциональность с библиотеками с открытым исходным кодом.

person Eugene Mayevski 'Callback    schedule 24.09.2014
comment
Здравствуйте, Евгений, спасибо за быстрый ответ. Есть хороший шанс, что я на самом деле путаю их двоих. Все, что я вижу, это то, что uri содержит sftp вместо ftp, и клиент часто называет его безопасным ftp. Откуда я знаю наверняка? Я знаю о FtpWebRequest - это работает для меня, и я написал свои собственные библиотеки, но как мне включить сертификат p12? - person Aiolos; 25.09.2014
comment
@Aiolos самое простое - спросить, к какому порту они подключаются. Если порт порта 22 или аналогичный (например, 2022), то, скорее всего, это SFTP. Если порт 990 или 21 или аналогичный (скажем, 2021), то это FTP-over-SSL. Обратите внимание, что если порт 990, это неявный TLS, а на портах 21 и подобных вы получите явный TLS. - person Eugene Mayevski 'Callback; 25.09.2014
comment
@Aiolos Как использовать файл pkcs # 12 в этом случае действительно зависит от протокола. - person Eugene Mayevski 'Callback; 25.09.2014