无法使用从本地文件读取的正确凭据(用户名和密码)向 SSH 服务器进行身份验证
Cannot authenticate to SSH server with correct credentials (username and password) read from a local file
我正在制作一个连接到 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
时,它会在行中尾随换行符。
因此您实际上是在使用错误的凭据进行连接,因为您的用户名和密码都包含换行符,这不是正确凭据的一部分。
参见Getting rid of \n when using .readlines()。
我正在制作一个连接到 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
时,它会在行中尾随换行符。
因此您实际上是在使用错误的凭据进行连接,因为您的用户名和密码都包含换行符,这不是正确凭据的一部分。
参见Getting rid of \n when using .readlines()。