window 下使用python paramiko ssh执行scp 提示Host key verification failed
时间: 2023-06-17 13:08:13 浏览: 230
这个错误是由于您的本地计算机第一次连接到目标服务器时,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错误了。
相关问题
window 下使用python paramiko 通过ssh执行scp 提示Host key verification failed
这个问题通常是因为第一次连接远程主机时,会在本地机器上生成一个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 将文件夹移动到Centos下
你可以使用 Paramiko 库来在 Python 中进行 SSH 操作,从而将文件夹从 Windows 移动到 CentOS。以下是一个基本的示例:
```python
import paramiko
import os
# 配置 SSH 连接参数
host = "your_host_ip"
port = 22
username = "your_username"
password = "your_password"
# 建立 SSH 连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password)
# 在 CentOS 上创建目标文件夹
remote_dir = "/path/to/remote/directory"
stdin, stdout, stderr = ssh.exec_command(f"mkdir -p {remote_dir}")
# 获取本地文件夹的路径
local_dir = os.path.abspath("your/local/directory")
# 使用 SFTP 将本地文件夹上传到 CentOS
sftp = ssh.open_sftp()
sftp.put(local_dir, remote_dir, recursive=True)
# 关闭连接
sftp.close()
ssh.close()
```
这段代码完成了以下操作:
1. 建立了一个 SSH 连接,使用了你的主机 IP、SSH 端口、用户名和密码。
2. 在 CentOS 上创建了一个目标文件夹,如果已经存在则忽略。
3. 获取了本地文件夹的绝对路径。
4. 使用 SFTP 上传了本地文件夹到 CentOS,递归上传子文件夹和文件。
5. 关闭了 SSH 连接。
请注意替换示例代码中的 `your_host_ip`、`your_username`、`your_password`、`/path/to/remote/directory` 和 `your/local/directory` 为你自己的实际值。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)