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 "[email protected]" 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.

jes516
źródło
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:[email protected]/ -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.)

Martin Prikryl
źródło
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