Weblog @ rebex.cz

Weblogy na webu Rebexu
Welcome to Weblog @ rebex.cz Sign in | Help
in Search

Weblog @ Rebex.cz :: Martin Vobr

weblog o vývoji v dotnetu

Jak v .NETu přenášet soubory na Linux stejným protokolem jako WinSCP?

Otázka z diskusního fóra:

Potřebuju přenášet soubory na Linuxový stroj stejným protokolem jako program WinSCP. Jak to zařídit v .NETu?

Odpověď:

Vzhledem k tomu, že o téhle problematice něco málo vím anžto podobné komponenty v Rebexu děláme tak jsem si tenhle dotaz drze přivlastnil :-) jakožto záminku k delšímu blogpostu.image

Otázka je dobrá, jen s tím "stejným protokolem jako WinSCP" je to takové vachrlaté. Aplikace se sice jmenuje WinSCP, ale podporuje tři způsoby přenosu a scp je jen jeden z nich. Který má tazatel na mysli?

  1. FTP a FTP/SSL - klasické FTP - možno použít FtpWebrequest z .NET 2.0+. Standardizováno v RFC. Existuje zebezpečená varianta FTP/SSL neboli
    FTPS. FTPS se občas označuje za Secure FTP. Fakt, že to, čemu všichni říkáme SSL se správně jmenuje TLS raději před p.t. čtenáři zatajím...
  2. SFTP neboli SSH File Transfer Protocol. Přenos souborů přes SSH kanál. Standardizováno v RFC. S FTP nemá nic společného, až na to že řeší podobné problémy. SFTP se tomu říká jen pro zmatení nepřítele a protože to Se žádným FTP nemá nic společného :-) . Aby zmatku nebylo málo tak se o SFTP často také mluví jako o Secure FTP.
  3. SCP - protokol-neprotokol. RFC na to není, a většina implementací se snaží fungovat stejně jako příkaz scp z OpenSSH. Původní unixový příkaz scp bylo ve skutečnosti jen bsd rcp provozované po šifrovaném kanálu. Silně omezená funkcionalita - umí vlastně jen přenést soubor z místa na místo. Žádné výpisy adresářů, žádné mazání souborů nebo čtení atributů. Některé scp utilitky navíc stejně interně pro přenos souborů používají SFTP. Protože protokol je dost chudý, tak se pro všechno mimo kopírování souborů musí přes SSHčko volat exec příkazu na serveru - což může způsobovat problémy s bezpečností i problémy s tím, že se tyto příkazy chovají na různých platformách různě.

Odkazy pro samostudium:

Když tohle všechno víme tak můžeme zkusit najít způsob jak se s problémem "přenášení souborů stejně jako WinScp" popasovat v .NETu.

.NETové komponenty pro FTP, SFTP a SCP
FTP a FTP/SSL
  • Nejsnazší případ. V .NET 2.0 a novějším je dostupná třída FtpWebRequest. Někteří si myslí, že provozovat s ní cokoliv jiného než download jediného souboru je masochismus, ale jiní jsou s ní vcelku spokojení. Přinejmenším je zadarmo a vždy po ruce - přinejmenším na desktopu - v .NET CF 1 a .NET CF 2 chybí.
  • Pro .NET 1.x existuje několik free implementací různého stadia dokončenosti (například na codeproject.com) i komerční komponenty. Free implementace mívají typicky problém s parsováním výpisu adresáře v jiných ftp serverech než MS FTP a nejběžnějších unixových ftp serverů. Pokud přes tohle úskalí projdou jsou pro základní práci docela použitelné.
  • O free implementaci pro .NET CF nevím, komerční FTP pro .NET CF nabízí například Rebex.
  • FTP/SSL pro .NET CF je pokud vím dostupné jen za peníze. Rebex FTP/SSL je jednou z možných variant.
SFTP
  • V žádném současném .NET frameworku není.
  • Implementováno v Rebex SFTP (.NET i .NET CF), jsou dostupné i další komerční komponenty.
SCP
  • Jde napsat vlastními silami nad open source implementací SSH Granados - tedy pokud vám nevadí, že je pojmenovaný podle Che Guevarova kámoše se kterým procestoval za mlada velký flák Jižní Ameriky :-).
  • Podporu SCP plánujeme přidat do Rebex SFTP během roku 2008. Zatím po něm moc lidí nevolalo, takže tahle fičura má prozatím menší prioritu. Chte-li to změnit ozvěte se v komentářích.
  • Obecně se od něj ustupuje a je nahrazován protokolem SFTP. Dokonce ani WinSCP už defaultně scp pro přenos souborů nepoužívá.

RRR (Ryzí Rebexí Reklama)

Nudíte se v práci? Co zkusit něco výživnějšího? Rozšiřujeme náš komponentový tým - přijmeme vývojáře .NETových komponent. Nevíte, jestli je vývoj komponent spíš práce snů nebo noční můra? Čtěte v blogu.

Published 29. listopadu 2007 11:30 by martinv

Comments

No Comments
New Comments to this post are disabled

This Blog

Syndication

News

Chcete koupit ojeté auto a chcete ho nechat prohlédnout někým kdo tomu rozumí a komu můžete věřit? Zkuste mého kamaráda Michala Ráže - Poradce při koupi ojetého vozu

ComponentForge (aka Safabyte) sells components stolen from Rebex and other .NET component vendors.

Uz jste vyzkoušeli naší komponentu pro práci s formátem ZIP s hromadou ukázek v jazycích C# a VB.NET?

Inspirace na výlet: Stubaiské Alpy - jak je zažili Honza a Mišák.

Powered by Community Server (Personal Edition), by Telligent Systems