Skip to main content
  1. Posts/
  2. blog.dsinf.net/

SFTP na Windows

·356 words·2 mins
blog.dsinf.net sftp ssh windows
Daniel Skowroński
Author
Daniel Skowroński

Może to i niestandardowe wymaganie, ale czasem i na Windowsie potrzeba SFTP - czyli transferu plików po SSH - pewniejsze, bardziej niezawodne i bezpieczne od FTP. No i autoryzacja po kluczu zamiast hasła…

Microsoft w ramach wpychania Linuksa do Windowsa popełnił własny build OpenSSH ( https://github.com/PowerShell/Win32-OpenSSH/), który działa poza cygwinem i mingw. Chociaż działa to póki co za duże słowo - SSH niby działa (chociaż emulacja terminala działa tak tragicznie, że putty łącząc się do windowsa może przez backspace kasować prompta, odpalenie powershella po ssh zawiesza sesję, a kliencka binarka nie supportuje kolorów ani UTF-a…), sam serwer plików niby też (swoją drogą z dość nowatorskim sposobem pokazywania ścieżek do dysków - /c**:**/ścieżka - w cygwinie jest /c/ścieżka), ale jest dość mocno ograniczony. Brakuje wsparcia dla chroota (jeden z issues na githubie stwierdza to wprost), crashuje się, by default loguje bardzo gadatliwie masę informacji na dysk i w ogóle mało produkcyjnie. Chociaż warto spróbować jako narzędzie administracyjne (nie do współdzielenia plików) bo jest w pełni standalone i dostępny przez chocolatey - pakiet win32-openssh.

Po poddaniu MSowego rozwiązania testowałem kilka rozwiązań zewnętrznych - m.in. freeSSHd, aż trafiłem na Cerberusa - ma wszystko. Jest to jednak w pełni wirtualna nakładka - sztuczni (choć integrowalni z systemem) użytkownicy/grupy, władne reguły uprawnień do chrootowanego systemu plików etc. W dłuższych testach sprawdził się całkiem nieźle (zużywa też znikomą ilość zasobów). Warto dodać, że Cerberus obsługuje nie tylko SFTP ale także FTP i FTPS (FTP z SSL) i ma nawet webowe GUI. Darmowy do zastosowań domowych, do firmy wart rozważenia jeśli naprawdę jest potrzebny (a może z powodzeniem zastępować IISowego FTPa).

Mamy jeszcze Cygwinowego OpenSSH - ale wymaga to pobawienia się w zależności, jest to rozwiązanie nie-natywne, czasem zawodne, nie integruje się z Powershellem… Jeśli sięgać po cygwina to prędzej postawiłbym cały serwer na Linuksie i tam wykorzystał pełnię możliwości.

Reasumując: MSowy OpenSSH dopiero startuje, choć jako dodatek do RDP jest całkiem ciekawy (i w pełni współgra z windowsowym mechanizmem uprawnień), natomiast Cerberus umożliwia udostępnianie systemu plików wirtualnym użytkownikom po “linuksowemu” choć dzięki nakładkowości zyskujemy bezpieczeństwo urywając użytkownikom rączki i nóżki żeby nie grzebali gdzie nie chcemy i na pewno nie odpalili shella.