2017-10-14 149 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失敗。)一旦我授予它權限,連接按預期工作。