2011-05-01 11 views
8

Jestem obecnie w sytuacji, gdy otrzymuję płaskie pliki za pośrednictwem FTP od moich klientów. Kilku klientów nalegało na potrzebę użycia SSH Private Key SFTP zamiast zwykłego FTP.Odbieranie pliku przez SFTP/SSH i automatyczne przekazywanie do FTP na innym serwerze

Co chcę zrobić, to konfiguracja serwera WWW (najlepiej w Linux/Unix, ale myślę, że mogę to zrobić na serwerze Windows i oprogramowania serwera zakup SFTP), który będzie wykonać następujące czynności:

  1. Pozwól, że skonfiguruję katalog SFTP dla każdego klienta z unikalnym użytkownikiem/przepustką. Każdy katalog musi również mieć klucz publiczny SSH "stuff". Jestem trochę nowy, ale googlełem.

  2. Gdy plik zostanie całkowicie przesłany przez klienta, chcę uruchomić zdarzenie, które ftp jest przesyłane przez zwykły serwer FTP do mojej chmury systemu Windows.

  3. Pliki te mogą mieć do 10 MB, więc nawet te ftp na drugim serwerze nie mogą wystrzelić, dopóki plik nie zostanie całkowicie przesłany.

Czy ktoś ustawił coś takiego? Wszelkie wskazówki będą mile widziane.

Dzięki!

+1

nie Mogłoby to być nadużywanie zaufania klientów? Prawdopodobnie klienci preferują SFTP, ponieważ ich dane zostaną zaszyfrowane, gdy przekroczą publiczny Internet. O ile serwer SFTP nie komunikuje się z serwerem FTP w chmurze w sieci prywatnej, nadal będziesz wysyłać je niezaszyfrowane przez Internet, aczkolwiek z własnego serwera zamiast ich. –

+0

Właściwie zapomniałem wspomnieć, że te dane są informacjami publicznymi i nie ma w nich nic wrażliwego. Niektórzy z moich klientów mają politykę, że nie mogą regularnie wysyłać FTP ... tylko SFTP z kluczem SSH. Co ciekawe, moja chmura systemu Windows obsługuje protokół "SFTP", ale nie całą klucz SSH. Więc mógłbym użyć tego, kiedy przekazuję plik do chmury systemu Windows. Dolna linia to zwykły FTP do chmury systemu Windows. Byłem w stanie rozmawiać z większością moich klientów o używaniu zwykłego FTP, ale mam tutaj upartą parę, dla której potrzebuję tego rozwiązania. – Robert

+0

Jeśli obsługują SFTP, znalezienie rozwiązania, które nie obsługuje uwierzytelniania klucza publicznego, byłoby czymś niezwykłym. Oczywiście twój dostawca usług w chmurze może uniemożliwić ci skonfigurowanie go, więc nie będzie to miało sensu. Jeśli potrzebujesz dowiedzieć się, jakie jest oprogramowanie serwera, możesz spróbować "ssh -v " na kliencie Linux i powinieneś zobaczyć "zdalną wersję oprogramowania ..." gdzieś w wynikach debugowania. –

Odpowiedz

5

W Linuksie można użyć incron do monitorowania katalogu, do którego pliki będą przesyłane SFTP i do wywoływania zadania FTP. To trochę jak cron, z tym że zamiast wyzwalać zadania oparte na czasie, robi to na podstawie modyfikacji systemu plików. Aby uruchomić tylko raz, gdy cały plik został napisany, myślę, że możesz użyć IN_CLOSE_WRITE w masce inotify. W przeciwnym razie sugeruję skonfigurowanie zdarzeń dla każdego zdarzenia indywidualnie w celu wysłania echa komunikatu do pliku dziennika i sprawdzenia, czy można zidentyfikować taki, który niezawodnie ma miejsce tylko na końcu transferu SFTP.

Jeśli używasz RedHat, to nie ma standardowej dystrybucji, ale jest w EPEL.

+0

Incron wydaje się, że może to być całkiem słodkie rozwiązanie. Czy masz jakieś zalecenia dotyczące prostej konfiguracji Linux/sftp? Innymi słowy, czy jest to ich oprogramowanie sftp, które poleciłbyś dla konkretnego smaku Linuksa? – Robert

+0

Prawie wszystkie nowoczesne dystrybucje Linuksa zawierają OpenSSH, który obsługuje SFTP z uwierzytelnianiem za pomocą klucza publicznego. W rzeczywistości jest to oddzielny podsystem w OpenSSH, ale zarówno RedHat, jak i Ubuntu domyślnie go włączają. –

4

W systemie Windows można użyć Titan FTP Server Enterprise Edition, która obsługuje SFTP, a także pozwala definiować różne typy zdarzeń. Gdy wydarzenie zostanie uruchomione, możesz rozpocząć wszystko, czego potrzebujesz na podstawie folderu/konta.

PS. AFAIK, jeśli chodzi o SFTP, jest to uwierzytelnianie hasłem lub uwierzytelnianie kluczem publicznym (klucz SSH), ale nie oba.

+0

Dzięki za wyjaśnienie hasła w stosunku do klucza publicznego, wiedziałem, że brakuje mi czegoś na temat terminologii, mam ją teraz dzięki. – Robert

+0

Nawet jeśli rzadko, widziałem niektóre konfiguracje wymagające zarówno uwierzytelniania za pomocą klucza publicznego, jak i hasła/interaktywnej klawiatury. – salva

3

Na serwerze UNIX można skonfigurować SSH tak, aby korzystał z niestandardowego serwera sftp, który zamiast obsługiwać sam protokół SFTP, otwiera nowe połączenie SSH z serwerem Windows SFTP przy użyciu uwierzytelniania hasłem i przekazuje tam ruch SFTP.

wpisywania proxy jest łatwy w odpowiednie narzędzia, na przykład, w Perl za pomocą modułu Net::OpenSSH:

#!/usr/bin/perl 
# this is the sftp-proxy-server 

use Net::OpenSSH; 
my $ssh = Net::OpenSSH->new($windows_server, $user, $passwd); 
$ssh->system({ssh_opts => '-s'}, 'sftp'); 
$ssh->error and die $ssh->error; 

można polecić serwer SSH w obsłudze, że alternatywny serwer SFTP zmianę konfiguracji w /etc/ssh/sshd_config. Na przykład:

Subsystem sftp /usr/local/bin/sftp-proxy-server 
Powiązane problemy