我试图使用Pexpect的模块pxssh登录到我的我的服务器之一。 我得到的密码拒绝。 我想我知道它是什么的问题,但无法弄清楚如何解决它。 问题是,有,当我登录到服务器欢迎横幅(更换旗帜,是不是一种选择)和Pexpect的得到迷惑。 这里是我的代码:
import pxssh
ssh = pxssh.pxssh()
ssh.login('192.168.1.10', 'username', 'password')
我期待一个“密码:”,但pxssh期待original_prompt =“[#$]”那些是符号和旗帜是情侣“”
任何帮助,我会很高兴。 谢谢
此错误来抓SSH是lock.so打开终端并执行命令
xxxx@toad:~$ rm .ssh/known_hosts
删除的known_hosts
另一个选项是在Windows登录,就意味着检查命令提示符。 如果您尝试在Windows登录装置Pexpect的使用
child = pexpect.spawn('ssh tiger@172.16.0.190 -p 8888')
child.logfile = open("/tmp/mylog", "w")
print child.before
child.expect('.*Are you sure you want to continue connecting (yes/no)?')
child.sendline("yes")
child.expect(".*assword:")
child.sendline("tiger\r")
child.expect('Press any key to continue...')
child.send('\r')
child.expect('C:\Users\.*>')
child.sendline('dir')
child.prompt('C:\Users\.*>')
pxssh使用壳提示输出来自远程主机同步。
为了使这更强大的它设置shell提示符的东西不仅仅是$#或更独特。 这应该对大多数树脂/ bash或Csh的风格弹工作。 请参阅 http://www.pythonforbeginners.com/code-snippets-source-code/ssh-connection-with-python/
我不知道你就在您的诊断,我不认为横幅可能会导致,但一个错误的提示可以肯定地做到这一点。 看代码是肯定的。 http://www.opensource.apple.com/source/lldb/lldb-69/test/pexpect-2.4/pxssh.py
特别是部分:
elif i==2: # password prompt again
# For incorrect passwords, some ssh servers will
# ask for the password again, others return 'denied' right away.
# If we get the password prompt again then this means
# we didn't get the password right the first time.
self.close()
raise ExceptionPxssh ('password refused')
免责声明:这不是我的代码,但Pxssh代码。 为什么不使用的paramiko( http://www.lag.net/paramiko/ )或直接Pexpect的 ?
文章来源: Python - Pxssh - Getting an password refused error when trying to login to a remote server