Jak utworzyć znany plik hostów? [duplikować]

Dec 15 2020

Próbuję połączyć się z witryną SFTP za pomocą języka Python, ale plik known_hosts nie istnieje na moim komputerze z systemem Windows 10. Znalazłem online, że klucz hosta pojawia się przy pierwszym połączeniu z serwerem:https://winscp.net/eng/docs/ssh_verifying_the_host_key

Jak przekonwertować to na plik known_hosts, którego mogę użyć w kodzie Pythona?

Próbowałem utworzyć plik taki jak: hostname ssh-rsa 2EP...8MZw powyższym przykładzie, ale otrzymuję nieprawidłowy błąd klucza hosta:Error('Incorrect padding'))

Dziękuję Ci.

import pysftp

cnopts = pysftp.CnOpts(knownhosts='C:\\Users\\Documents\\known_hosts')

with pysftp.Connection('xxx',username='xxx', password='xxx',cnopts=cnopts) as sftp:
    localpath='TEST.txt'
    remotepath='TEST.txt'
    sftp.put(localpath,remotepath)
    sftp.close()

Odpowiedzi

TheDevKiller Dec 15 2020 at 21:28

Najpierw będziesz chciał naprawdę wiedzieć, jakiego protokołu używasz. W swoim pytaniu wielokrotnie wspominałeś o FTP, a Twój kod + koncepcja, o której mówisz (znane_hosty) to rzeczy SFTP.

FTP i SFTP to dwa zupełnie różne protokoły, FTP służy do przesyłania plików między klientem a serwerem, a SFTP do przenoszenia plików między klientem SSH a serwerem.

SaltyLeaguePlayer Dec 15 2020 at 23:03

ROZWIĄZANY!!! Jestem w systemie Windows i używam FileZilla i WinScp do transferów sftp, ale plik C: \ Users .... ssh nigdy nie istniał, o ile wiem. Pobrałem klienta Windows SSH:https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/

A następnie użył PowerShell, aby połączyć się z serwerem. Po wprowadzeniu polecenia: ssh hostnamepoda odcisk palca RSA i zapyta, czy chcesz się połączyć. Wpisz Yes i zwróci "Ostrzeżenie:" nazwa hosta "została trwale dodana do listy znanych hostów. Plik .ssh pojawi się wtedy w katalogu C: \ Users .... ssh. Można do niego odwołać się w Pythonie.

Dziękuję Ci.