python - 无法使用从本地文件读取的正确凭据(用户名和密码)对 SSH 服务器进行身份验证
问题描述
我正在制作一个连接到 SSH 服务器的小程序,测试 .txt 文件中的多个用户名和密码。我遇到的问题是,当它获得正确的用户名和密码时它无法连接,或者至少我的if
声明没有正确地说出来。
如果我确实将它作为常规变量传递或只是设置username = 'correct user' ,password = 'correct password'
,它可以工作。这是代码的一部分,我正在使用 Linux VM 在本地环境中进行测试:
# read files
fs = open('users.txt','r')
users = fs.readlines()
fs.close()
fs = open('passwords.txt','r')
psswds = fs.readlines()
fs.close()
# connect and test the password
for user in users:
for psswd in psswds:
try:
print(usuario)
print(senha)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
con = ssh.connect(ip,port,username = user,password = psswd)
if con is None:
print ('yes')
break
else:
print ('nop')
SSHClient.close()
except paramiko.AuthenticationException:
print('User and/or password incorrect')
解决方案
当您使用readlines
时,它会在行中保持尾随换行符。
因此,您实际上使用了错误的凭据进行连接,因为您的用户名和密码都包含新行,这不是正确凭据的一部分。
推荐阅读
- mysql - 如何使用同一时间合并完整日历中的事件,并且我对 timegridview 有问题,即使我有时间它也只是保存在 alldayslot 中
- postgresql - 禁用 HQL 验证查询
- maven - YAKS 在独立 Kubernetes 集群上失败
- java - 带有批处理 SQL 的 Java For 循环
- prolog - prolog - 计算二叉树中的节点
- docker - Docker:为什么--rm 在我退出时没有删除我的容器
- c# - 程序树生成器中的问题。C# 统一
- ios - SwiftUI:无法更改分段控件的背景颜色以清除?
- swift - Swift 中的自定义运算符优先级问题?
- multithreading - 具有两个双核处理器的系统具有四个处理器线程数