无法使用从本地文件读取的正确凭据(用户名和密码)向 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()