window 下使用python paramiko 通过ssh执行scp 提示Host key verification failed
时间: 2023-06-17 11:08:12 浏览: 343
这个问题通常是因为第一次连接远程主机时,会在本地机器上生成一个known_hosts文件,用于存储远程主机的公钥信息。当下次再次连接该主机时,paramiko会检查该主机的公钥是否与known_hosts文件中保存的一致,如果不一致就会报Host key verification failed错误。
解决方法是删除本地机器上该主机的公钥信息,让paramiko重新生成:
1. 打开本地机器上的known_hosts文件,该文件一般在用户目录下的.ssh子目录中。
2. 找到对应远程主机的公钥信息,删除该行内容。
3. 重新连接远程主机时,paramiko会重新生成该主机的公钥信息,并保存到known_hosts文件中。
注意:删除本地机器上known_hosts文件中的公钥信息,可能存在一定的安全风险,因为这会使得paramiko无法验证远程主机的真实性,可能会导致中间人攻击。如果您对安全性要求较高,建议使用其他更加安全的方法来解决该问题。
相关问题
window 下使用python paramiko ssh执行scp 提示Host key verification failed
这个错误是由于您的本地计算机第一次连接到目标服务器时,SSH会将目标服务器的公钥保存到本地计算机的known_hosts文件中。当下次连接到相同的服务器时,SSH会比对本地计算机的known_hosts文件中的公钥和目标服务器的公钥,如果不一致就会提示Host key verification failed错误。
解决方法:
1. 手动删除本地计算机的known_hosts文件中与目标服务器相关的公钥,然后重新连接。在Windows上,known_hosts文件位于C:\Users\<username>\.ssh\known_hosts。
2. 如果您确定目标服务器的公钥没有被篡改,可以通过将ssh连接的参数设置为自动添加目标服务器的公钥来跳过此错误。在paramiko中,可以通过设置missing_host_key_policy参数来实现。示例代码如下:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('example.com', username='user', password='password')
```
这样,当您第一次连接到目标服务器时,paramiko会自动将目标服务器的公钥添加到本地计算机的known_hosts文件中,下次连接时就不会再出现Host key verification failed错误了。
windows 使用paramiko.SSHClient 第一次连接 centos 提示Host key verification failed,请问如何解决
这个问题是由于第一次连接时,Paramiko无法验证CentOS主机的密钥所致。要解决此问题,请按照以下步骤操作:
1. 在Windows上打开命令行,输入以下命令:
```
ssh-keygen -R <centos_ip_address>
```
其中,`<centos_ip_address>`是CentOS主机的IP地址。这将从Windows计算机中删除CentOS主机的旧密钥记录。
2. 在Python代码中添加以下代码,以忽略主机密钥验证:
```
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
```
这将告诉Paramiko自动接受新的主机密钥。
3. 重新运行你的Python代码,你应该能够成功连接到CentOS主机。
希望这可以帮助你解决问题。
阅读全文