类 ‘Transport‘ 的未解析的特性引用 ‘set_missing_host_key_policy‘

原因分析

PyCharm 中出现这个提示是因为我使用 paramiko 2.x 版本来执行的,而Transport 类在 version 2.x 中已经被废弃了, 建议使用 SSHClient 代替

背景简介

transport.set_missing_host_key_policy(paramiko.AutoAddPolicy())方法的作用是自动添加主机密钥。在 SSH 连接时,通常会使用 known_hosts 文件来存储已知的主机密钥。如果本地 known_hosts 文件中不存在主机密钥,则会弹出一个警告,询问用户是否继续连接。如果用户选择继续连接,则会将主机密钥添加到 known_hosts 文件中。

使用 transport.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 方法可以跳过这个提示,自动添加主机密钥。

这个方法应该写在连接时,在 transport 初始化之前.例如, 在下面的代码片段中:

transport = paramiko.Transport( (hostname, port) )
transport.set_missing_host_key_policy(paramiko.AutoAddPolicy())
transport.connect(username=username, password=password)

在 paramiko 2.x 版本中,Transport 类被废弃了,那我们使用 SSHClient 来代替
用法上和 Transport 基本类似, 下面是一个简单的例子:

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='your_host', port=22, username='username', password='password')
stdin, stdout, stderr = ssh.exec_command('ls -l')
print(stdout.read())
ssh.close()

可以看到这里使用了 ssh.connect 方法来建立连接, 以及 ssh.exec_command 方法来执行命令. 并且在这里使用了 ssh.set_missing_host_key_policy 方法来设置密钥策略.

此外, SSHClient 还有很多其它方法可用,可以参考 paramiko 官方文档 获取更多信息.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值