在Python中的Paramiko中强制密码验证(忽略.ssh文件夹中的键)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python中的Paramiko中强制密码验证(忽略.ssh文件夹中的键)相关的知识,希望对你有一定的参考价值。

我正在尝试编写一个小的Python程序来检查SSH服务器是否允许密码验证。这是目前的计划:

import base64
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('ssh.example.com', username='strongbad', password='thecheat')
stdin, stdout, stderr = client.exec_command('ls')
for line in stdout:
    print('... ' + line.strip('
'))
client.close()

想法是grep输出或后来在try声明周围放置catch connect块。

然而,我的问题是我运行程序的某些系统可以通过存储在~/.ssh下的RSA密钥进行访问。在这些情况下,连接只会成功(我想避免)。

所以,问题是:有人知道任何方式强迫Paramiko(或其他SSH客户端)使用密码吗?

谢谢

答案

SSHClient.connect方法有look_for_keys论证。将它设置为False

client.connect(
    'ssh.example.com', username='strongbad', password='thecheat', look_for_keys=False)

同样,您可能也想将allow_agent设置为False


强制警告:除非你不关心安全,否则不要使用AutoAddPolicy。你正在以这种方式失去对MITM攻击的保护。 有关正确的解决方案,请参阅Paramiko "Unknown Server"

以上是关于在Python中的Paramiko中强制密码验证(忽略.ssh文件夹中的键)的主要内容,如果未能解决你的问题,请参考以下文章

python基础 paramiko

使用 Paramiko 进行多因素身份验证(密码和密钥)

python的paramiko模块简单应用

linux下的ssh登录服务器不需要密码, 在python中paramiko模块登录服务器为啥需要密码

Python - pysftp / paramiko - 使用其指纹验证主机密钥

python paramiko模块