Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 帕拉米科“;未知服务器”;_Python_Paramiko - Fatal编程技术网

Python 帕拉米科“;未知服务器”;

Python 帕拉米科“;未知服务器”;,python,paramiko,Python,Paramiko,我刚开始使用paramiko,我对load_system_host_keys()有一些问题 当我尝试时: client = SSHClient() client.load_system_host_keys(filename='/home/barashe/.ssh/known_hosts') client.connect(hostname='lvs.cs.bgu.ac.il') stdin, stdout, stderr = client.exec_command('ls -l') 我明白了 S

我刚开始使用paramiko,我对load_system_host_keys()有一些问题

当我尝试时:

client = SSHClient()
client.load_system_host_keys(filename='/home/barashe/.ssh/known_hosts')
client.connect(hostname='lvs.cs.bgu.ac.il')
stdin, stdout, stderr = client.exec_command('ls -l')
我明白了

SHException: Server 'lvs.cs.bgu.ac.il' not found in known_hosts
而且hostkeys实例似乎是空的

list(client.get_host_keys())
[]
如果我使用load_host_keys()而不是load_system_host_keys(),我仍然会得到相同的错误,但是hostkeys实例现在不是空的,它包括我尝试连接的服务器

list(client.get_host_keys())
['lvs.cs.bgu.ac.il',
'132.72.41.50']
这似乎很奇怪。。。 我通过使用

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
我可以避免这种情况,但我更喜欢用“正确”的方式

我想了解的是:

  • 为什么在使用load_host_keys()时,即使服务器出现在hostkeys()中,也会出现相同的错误
  • 在此上下文中,load_host_keys()和load_system_host_keys()之间有什么区别

  • 干杯

    如果这是主目录中的私有主机密钥文件,则不应使用load_system_host_密钥,而应使用load_host_密钥

    出于好奇,如果您没有使用set_missing_host_key_策略,您从哪里获得该特定主机的主机密钥?如果从.ssh目录复制,则密钥文件格式可能不同。有几个

    您可以通过添加一次AutoAdd missing host key策略并指向空的私有主机密钥文件来测试它。您的登录现在应该成功了(假设身份验证成功)。无论成功与否,您的私有主机密钥文件现在都应该包含正确格式的主机密钥。您可以通过删除缺少的主机密钥策略设置并再次运行脚本来验证它是否有效。它不应该再抱怨主机密钥丢失了

    这对我很有用:

    from paramiko import SSHClient
    import paramiko
    
    client = SSHClient()
    client.load_host_keys(filename='/home/test/stest/kknown_hosts')
    # client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    client.connect(hostname='137.xx.x.x')
    stdin, stdout, stderr = client.exec_command('ls -l')
    
    希望这有帮助,
    Hannu

    我确实使用了我的.ssh/known_hosts文件,我知道这不是一个好的调用。我现在按照你的建议创建了一个新文件,一切都很好!非常感谢!