borzole Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 Mam na fedorce odpalony server ssh z wpisem w ssh_config "Subsystem sftp /usr/libexec/openssh/sftp-server" i z WinSCP (odpalony na M$ Windows) moge dostac sie do niego uzywajac zarówno "file protocol" SCP jak i SFTP. Czy ktos jest w stanie wyjasnic co to tak naprawde oznacza w tym WinSCP, skoro odpowiada za to ta sama usluga na fedorce? Pytam sie, bo w zaden sposób nie moge dostac sie do zasobów z poziomu skryptu pytona (odpalony na tej samej maszynie co winscp) uzywajac modulu ftplib. Ale ten sam skrypt bez problem laczy sie z FTP (freesshd.com) na W7 lub SFTP na HP-UX. from ftplib import FTP ftp = FTP() ftp.set_debuglevel(2) ftp.connect('192.168.1.12','2222') ftp.login('lucas','1234') print ftp.getwelcome() print ftp.pwd() print print ftp.dir() print ftp.retrlines('LIST') ftp.quit() odpowiedz: *get* 'SSH-2.0-OpenSSH_5.5\r\n' tu nastepuje zawieszenie na ~1minute potem reszta *get* '' Traceback (most recent call last): File "ftpium.py", line 48, in <module> ftp = getFtp(True) File "ftpium.py", line 13, in getFtp ftp.connect('192.168.1.12','2222') File "C:\usr\share\Python27\lib\ftplib.py", line 135, in connect self.welcome = self.getresp() File "C:\usr\share\Python27\lib\ftplib.py", line 210, in getresp resp = self.getmultiline() File "C:\usr\share\Python27\lib\ftplib.py", line 200, in getmultiline nextline = self.getline() File "C:\usr\share\Python27\lib\ftplib.py", line 186, in getline if not line: raise EOFError EOFError to wyglada tak, jakby nie uzyskal odpowiedzi i stad zwraca blad "koniec pliku/nadawania" Dokladnie to samo sie dzieje, gdy uruchomie skrypt lokalnie na fedorce *get* 'SSH-2.0-OpenSSH_5.5\r\n' *get* '' Traceback (most recent call last): File "silnik.py", line 12, in <module> ftp.connect('127.0.0.1','2222') File "/usr/lib/python2.7/ftplib.py", line 135, in connect self.welcome = self.getresp() File "/usr/lib/python2.7/ftplib.py", line 210, in getresp resp = self.getmultiline() File "/usr/lib/python2.7/ftplib.py", line 200, in getmultiline nextline = self.getline() File "/usr/lib/python2.7/ftplib.py", line 186, in getline if not line: raise EOFError EOFError Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Subaru Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 Jakieś różnice istnieją na pewno, to nie przypadek iż w smartfonach można znaleźć aplikacje właśnie do komunikacji SSH a nie FTP Powypisuję różnice, które mi przyjdą na myśl, zapewne są oczywiste ale może coś Cię natchnie - Port (FTP 21 ;; SSH 22) - Szyfrowanie (FTP z tego co pamiętam nie używa kluczy ;; SSH używa kluczy RSA bodajże jako odcisk czy coś) - Podtrzymywanie połączenia (przy FTP nie słyszałem o czymś takim ;; w SSH możliwe jest podtrzymywanie połączenia w przypadku bezczynności) - Logowanie (FTP umożliwia per anonymous ;; SSH chyba nie pozwala na zabawę anonymousem, musi być login i hasło konkretne) - Wykonywanie poleceń (FTP pozwoli tylko na polecenia FTP'kowe ;; SSH pozwala na niemalże pełną zdalną kontrolę "ofiarą" ;]) - Podsłuch (FTP idzie podsłuchać ;; SSH już nie tak łatwo podsłuchać przy odpowiednich zabezpieczeniach) Jeszcze tutaj jest jakaś rozpiska protokołów, może coś więcej jeszcze rozjaśni http://zagrodzki.net/~sebek/security.html Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Czerwiec 12, 2011 Zgłoszenie Share Napisano Czerwiec 12, 2011 Modułem ftplib na pewno się nie dostaniesz, bo to nie ten protokół (jak zauwazył wyżej Subaru, są różnice między ftp i sftp). Do połaczeń ssh i sftp w pythonie, możesz wykorzystać paramiko. Jest też w repo, jako python-paramiko. W dokumentacji jest przykład z sftp, /usr/share/doc/python-paramiko-*/demos/demo_sftp.py. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Czerwiec 12, 2011 Autor Zgłoszenie Share Napisano Czerwiec 12, 2011 Najwyraźniej w pracy mam postawiony obok siebie FTP i SFTP z tym samym userem i hasłem co wiele wyjaśnia. Prawdę mówiąc logika była mniej więcej taka: - w pracy: - WinSCP przez SFTP - OK - zróbmy skrypt z użyciem ftplib - OK wniosek: ftplib działa z SFTP - w domu: - WinSCP przez SFTP - OK - ftplib - ERROR wniosek: wtf ? Natomiast mylące pozostaje, dlaczego wysyłane jest: *get* 'SSH-2.0-OpenSSH_5.5\r\n' co automatycznie sugeruje SSH. Dobra dzięki, potrzebowałem potrenować użycie ftplib więc postawię ftp. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się