既知のhostsファイルを作成するにはどうすればよいですか?[複製]
Pythonを使用してSFTPサイトに接続しようとしていますが、known_hostsファイルがWindows10マシンに存在しません。オンラインで、サーバーに最初に接続したときにホストキーが表示されることがわかりました。https://winscp.net/eng/docs/ssh_verifying_the_host_key
これをPythonコードで使用できるknown_hostsファイルに変換するにはどうすればよいですか?
hostname ssh-rsa 2EP...8MZ
上記の例のようなファイルを作成しようとしましたが、無効なホストキーエラーが表示されます:Error('Incorrect padding'))
ありがとうございました。
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()
回答
まず、使用しているプロトコルを本当に知りたいと思うでしょう。あなたの質問では、FTPについて何度も言及しましたが、コードとあなたが話している概念(known_hosts)はSFTPのものです。
FTPとSFTPは2つの完全に異なるプロトコルであり、FTPはクライアントとサーバー間でファイルを転送するためのものであり、SFTPはSSHクライアントとサーバー間でファイルを移動するためのものです。
解決しました!!! したがって、私はWindowsを使用しており、sftp転送にFileZillaとWinScpを使用していますが、C:\ Users .... sshファイルは私が知る限り存在していません。WindowsSSHクライアントをダウンロードしました。https://www.howtogeek.com/336775/how-to-enable-and-use-windows-10s-built-in-ssh-commands/
次に、PowerShellを使用してサーバーに接続しました。コマンドを入力するssh hostname
と、RSAフィンガープリントが表示され、接続するかどうかが尋ねられます。「はい」と入力すると、「警告:既知のホストのリストに「恒久的に追加された」ホスト名」が返されます。.sshファイルがC:\ Users .... sshディレクトリに表示されます。これは、Pythonで参照できます。
ありがとうございました。