我正在使用以下代码连接到远程服务器:

ssh = paramiko.SSHClient() 
ssh.load_system_host_keys() 
ssh.set_missing_host_key_policy(paramiko.WarningPolicy()) 
ssh.connect( 
    hostname=settings.HOSTNAME, 
    port=settings.PORT, 
    username=settings.USERNAME, 
) 

当我在本地服务器 A 上时,我可以从命令行 ssh 到远程,这表明它在 known_hosts 中。 .并且代码按预期工作。

在本地服务器 B 上,我还可以从命令行 ssh 到远程服务器。但是当我尝试使用上面的代码时,我得到:
/opt/mysite/virtualenv/lib/python3.5/site-packages/paramiko/client.py:763: UserWarning: Unknown ssh host key for [hostname]:22: b'12345' 
  key.get_fingerprint()))) 
 
... 
 
  File "/opt/mysite/virtualenv/lib/python3.5/site-packages/paramiko/client.py", line 416, in connect 
    look_for_keys, gss_auth, gss_kex, gss_deleg_creds, t.gss_host, 
  File "/opt/mysite/virtualenv/lib/python3.5/site-packages/paramiko/client.py", line 702, in _auth 
    raise SSHException('No authentication methods available') 
paramiko.ssh_exception.SSHException: No authentication methods available 

与“ SSH - Python with paramiko issue”不同,我同时使用了 load_system_host_keys 和 WarningPolicy,因此我不需要以编程方式添加密码或 key (也不需要在本地服务器 A 上添加)。

我错过了一些系统配置步骤吗?

请您参考如下方法:

尝试使用fabric(这是基于invoke + paramiko编写的)而不是paramiko并设置以下参数:

con = fabric.Connection('username@hostname' ,connect_kwargs={'password': 'yourpassword', 'allow_agent': False} 

如果它一直在下降,请尝试检查您的密码是否仍然有效并且您不需要更改密码。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!