我正在使用pysftp軟件包版本0.2.9運行Python 3。使用python pysftp軟件包,得到「SSHException:服務器上的主機密鑰錯誤」錯誤
我有以下代碼在這裏。我正在按照線路cnopts.hostkeys.keys()
所示正確加載主機密鑰。
import pysftp
key_file_test = './path_to_key_file/key_file.pub'
DOWNLOAD_UAT = {
"USERNAME": "xxxxxxxx",
"PASSWORD": "xxxxxxxx"
}
UAT_FTP_SITE = 'sftp-test.site.com'
cnopts = pysftp.CnOpts()
cnopts.hostkeys.load(key_file_test)
cnopts.hostkeys.keys()
'''['github.com', 'XXX.XX.XXX.XXX', 'sftp-test.site.com']'''
srv = pysftp.Connection(host=UAT_SFTP_SITE, username=DOWNLOAD_UAT['USERNAME'],
password=DOWNLOAD_UAT['PASSWORD'], cnopts=cnopts, port=22)
然後我的錯誤,當我運行的最後一行是
---------------------------------------------------------------------------
SSHException Traceback (most recent call last)
<ipython-input-82-308ec955a92e> in <module>()
8
9 srv = pysftp.Connection(host=UAT_SFTP_SITE, username=DOWNLOAD_UAT['USERNAME'],
---> 10 password=DOWNLOAD_UAT['PASSWORD'], cnopts=cnopts, port=22)
11 data = srv.listdir()
C:\ProgramData\Anaconda3\lib\site-packages\pysftp\__init__.py in __init__(self, host, username, private_key, password, port, private_key_pass, ciphers, log, cnopts, default_path)
141 self._transport.use_compression(self._cnopts.compression)
142 self._set_authentication(password, private_key, private_key_pass)
--> 143 self._transport.connect(**self._tconnect)
144
145 def _set_authentication(self, password, private_key, private_key_pass):
C:\ProgramData\Anaconda3\lib\site-packages\paramiko\transport.py in connect(self, hostkey, username, password, pkey, gss_host, gss_auth, gss_kex, gss_deleg_creds)
1139 key.get_name(), repr(key.asbytes()))
1140 )
-> 1141 raise SSHException('Bad host key from server')
1142 self._log(DEBUG, 'Host key verified (%s)' % hostkey.get_name())
1143
SSHException: Bad host key from server
有誰知道問題是什麼嗎?
重複:[paramiko SSHException,來自服務器的主機密鑰錯誤](https://stackoverflow.com/q/38362714/7414759) – stovfl
@stovfl我已經查看過此答案。它不適合我的情況我沒有主機私鑰,我只有他們的公鑰才能連接。 –
示例代碼不使用_ **主機私鑰** _,它是_ **客戶機私鑰** _。閱讀[瞭解SSH密鑰對](https://winscp.net/eng/docs/ssh_keys)以驗證您對用於身份驗證的密鑰對沒有疑惑。 – stovfl