Skrypt do pobierania plików z serwera SSH


0

Czy można utworzyć skrypt, który wykonuje te same polecenia, które wykonuje FileZilla podczas łączenia się z serwerem ssh?

Kiedy loguję się ręcznie za pomocą FileZilla, pojawia się następujący komunikat dla następujących typów połączeń:

The server's host key is unknown. You have no guarantee that the server is the
computer you think it is.


    Host:  securedomain_1.com:22
    Fingerprint: ssh-dss 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

    Host:  securedomain_2.com:22
    Fingerprint: ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

    Host:  securedomain_3.com:22
    Fingerprint: ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx


Trust this host and carry on connecting?
[ ] Always trust this host, add this key to the cache.
[OK] [CANCEL]

Klikam OK i NIE dodam klucza do pamięci podręcznej ...

Kiedy loguję się ręcznie, są to polecenia, które wykonuje FileZilla:

Status: Connecting to my.secure.site.com...
Response:   fzSftp started
Command:    open "user@my.secure.site.com" 22
    [asks for key...]
    [I manually click OK]
Command:    Trust new Hostkey: Once
Command:    Pass: ********
Status: Connected to my.secure.site.com
Status: Retrieving directory listing...
Command:    cd "/SFTP/DIR"
Response:   New directory is: "/SFTP/DIR"
Command:    ls
Status: Listing directory /SFTP/DIR
Status: Calculating timezone offset of server...
Command:    mtime "IN"
Response:   1412312345
Status: Timezone offsets: Server: -18000 seconds. Local: -18000 seconds. Difference: 0 seconds.
Status: Directory listing successful

Co dokładnie się dzieje, gdy kliknę przycisk OK, aby „Ufać temu hostowi i kontynuować nawiązywanie połączenia”?

Czy akceptuję klucz z serwera SSH?

To byłoby dla komputera z systemem Windows. Myślałem o użyciu WinSCP, ale chciałbym zrozumieć, co się dzieje, gdy łączę się z tymi serwerami. Mam kilka skryptów przeznaczonych dla FTPS, które nie działają w przypadku tych serwerów.



czy muszę uwzględnić klucz w skrypcie?
— jes516

Odpowiedzi:


1

Podczas łączenia się z serwerem SSH musisz sprawdzić, czy ufasz kluczowi hosta serwera . Ma to na celu zapobieganie atakowi typu man-in-the-middle .

W skryptach WinSCP weryfikujesz klucz hosta za pomocą -hostkeyprzełącznika openpolecenia.

open sftp://user:password@my.secure.site.com/ -hostkey="ssh-dss 2048 xx..."

Odnośniki: Gdzie mogę uzyskać odcisk palca klucza hosta SSH w celu autoryzacji serwera?

Istnieje przewodnik, jak przekonwertować skrypt Windows FTP na skrypt WinSCP SFTP .


Uwaga dotycząca poleceń w dzienniku FileZilla: Te polecenia są zastrzeżonymi poleceniami psftp(tego, co FileZilla wykorzystuje wewnętrznie do implementacji protokołu SFTP). Nie mają one nic wspólnego z protokołami SFTP ani SSH jako takimi. Oczywiście wszystkie mapują wewnętrznie na niektóre żądania SFTP i można je emulować za pomocą skryptów WinSCP. Ale polecenia WinSCP byłyby inne. Należy również pamiętać, że SFTP, w przeciwieństwie do FTP to protokół binarny, więc nie ma żadnego tekstu komend jak w FTP ( cd, pwdetc.)


jest -hostkey=""cała „odcisk palca” informacje, które są wyświetlane w wierszu FileZilla? czy wiesz też, czy mogę przetestować „połączenia ssh” za pomocą openssh, generując klucz w systemie Linux, a następnie używając skryptu WinSCP + w systemie Windows? używam linuxa w virtualbox do pisania skryptów w Pythonie, więc jestem zaznajomiony z linux / ftp, ale chciałbym przeprowadzić autotest, zanim zacznę próbować trafić na rzeczywisty serwer produkcyjny (nie mój).
— jes516

Tak, to cały ciąg. Zobacz [ winscp.net/eng/docs/faq_script_hostkey](Gdzie otrzymam odcisk palca klucza hosta SSH do użytku ze skryptami?). Zakładam, że „generowanie klucza” oznacza „uzyskanie odcisku palca klucza hosta” (w formacie wymaganym dla WinSCP).
— Martin Prikryl

przepraszam tak, wygeneruj klucz w openssh, aby uzyskać go w środowisku Windows za pomocą winscp. czy ten pomysł miałby taki sam efekt jak połączenie w moim oryginalnym poście? .. mogę wykonać testowanie bez generowania ruchu na serwerze produkcyjnym ..
— jes516

OpenSSH wyświetla klucz hosta w podobnym formacie jak FileZilla / WinSCP, z tym wyjątkiem, że nie używa ssh-dss/ssh-rsa key_sizeprzedrostka.
— Martin Prikryl
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.