2015-04-24 5 views
-1

Я использую VS 2012, и я хотел бы безопасно передавать файлы с сервера после настройки SFTP-соединения. Я слышал, что настройка этого в Windows - большая задача по сравнению с Linux. Может ли кто-нибудь сказать мне точную процедуру, чтобы следовать.Каковы требования для настройки SFTP-соединения в Windows C#?

Developments до сих пор
Насколько я знаю, нет сборки .NET, которые позволяют сделать SFTP сразу. Но мы можем использовать FtpWebRequest, используя сборку System.Net. Но я хочу использовать SFTP. Я нашел приложение freesshd, которое помогает в реализации SSH-сервера. Я также слышал о SFTP Blackbox и Rebex (оба из которых являются платными версиями).

Ожидаемый шаблон ответа
Шаг мудрый пошаговое руководство от того, как к настройке SFTP в сервере, чтобы как успешно соединиться с этим сервером с локального компьютера. Предложения для инструментов, сборок или сторонних библиотек, которые должны использоваться для выполнения этой задачи, желательно со ссылкой. Подробное пошаговое руководство на стороне клиента и на стороне сервера для достижения этой задачи.

Я ценю любую помощь на этом. Заранее спасибо.

ПРИМЕЧАНИЕ: Это приложение для Windows Form, а не веб-приложение.

ответ

0

Это на самом деле довольно легко, там не так много. Вы можете загрузить скомпилированный клиент Renci SFTP с https://sshnet.codeplex.com/releases/view/120565 (как .NET 35, так и 40).

На стороне сервера вы уже упоминали freeFTPd, который отлично подходит для тестирования. Не рекомендовал бы его для уровня производства. Добавьте пользователя и пароль и домашний каталог. Затем запустите прослушивание сервера.

На стороне клиента, используя Renci, создайте новый объект StfpClient, соединяющий 127.0.0.1 на порту 22 с использованием имени пользователя и пароля. Чтобы клиент мог аутентифицировать сервер, вы можете прослушивать событие client.HostKeyReceived.

Единственная ошибка, с которой я столкнулся с Renci, заключается в попытке вручную открыть поток, используя FileMode.Create. Я ожидал, что он перезапишет существующий файл, но он всегда добавляется к файлу при загрузке. Внутренне он поддерживает свои собственные флаги, но эти флаги не соответствуют ожидаемому поведению перечисления System.IO.FileMode. Мне удалось обрезать файл, загрузив пустой MemoryStream, а затем используйте метод Open для Renci. Методы Delete и DeleteFile, похоже, тоже не работали, что может быть ошибкой в ​​freeFTPd, не были протестированы с использованием другого SFTP-сервера.

Смежные вопросы