2017-10-14 150 views
1

我连接到远程服务器用下面的代码:的paramiko无法打开,即使load_system_host_keys ssh连接+ WarningPolicy

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,所以我不应该需要编程添加一个密码或者密钥(我不需要到本地服务器A)。

是否有一些我错过的系统配置步骤?

回答

0

我在本地服务器B上用错误的用户进行了测试。运行Python进程的用户毕竟没有ssh权限。 (该用户的命令行ssh失败。)一旦我授予它权限,连接按预期工作。