我正在尝试开始使用 Paramiko 库,但是当我尝试连接以下简单程序时,该库就会引发异常:
import paramiko ssh = paramiko.SSHClient() ssh.connect('127.0.0.1', username='boatzart', password='mypassword')
我收到的错误是:
Traceback (most recent call last): File "test.py", line 6, in <module> ssh.connect('127.0.0.1') File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 316, in connect File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 85, in missing_host_key paramiko.SSHException: Unknown server 127.0.0.1
无论我尝试哪个服务器都会发生这种情况。
您在使用 Paramiko 时遇到的错误与主机密钥验证有关。Paramiko 抛出异常,因为它无法识别服务器(在本例中为127.0.0.1),并且无法验证其主机密钥。这是一项防止中间人攻击的安全功能。
127.0.0.1
要解决此问题,您有以下几种选择:
此选项禁用主机密钥检查,除非您确定存在安全隐患,否则不建议在生产中使用。
import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('127.0.0.1', username='boatzart', password='mypassword')
set_missing_host_key_policy(paramiko.AutoAddPolicy())
known_hosts
SSHException
此选项更安全,因为它明确添加了已知主机的主机密钥。
import paramiko ssh = paramiko.SSHClient() ssh.load_system_host_keys() ssh.connect('127.0.0.1', username='boatzart', password='mypassword')
load_system_host_keys()
paramiko.AutoAddPolicy()
选择最适合您的安全要求和设置的选项。如果您在本地或受信任的环境中测试,paramiko.AutoAddPolicy()可能会更方便。对于生产,请考虑使用load_system_host_keys()手动管理或谨慎管理主机密钥。