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



我正在尝试编写一个小型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('n'))
client.close()

这个想法是 grep 输出或稍后在connect语句周围放置一个trycatch块。

但是,我的问题是我运行该程序的某些系统可以通过存储在~/.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 "未知服务器"。

最新更新