2013-04-04 1 views
1

pxpect 모듈 pxssh를 사용하여 내 서버에 로그인하려고합니다. 암호가 거부되었습니다. 문제가 무엇인지는 알지만 문제를 해결하는 방법을 알 수는 없다고 생각합니다. 문제는 내가 서버에 로그인 할 때 환영 배너가 있다는 것입니다 (배너 변경은 옵션이 아닙니다). 그리고 pexpect가 혼란스러워집니다. 하지만 pxssh은 '[# $으로]'=을 original_prompt 기대하고 사람들은 상징과 배너에가의 커플 '암호'나는 기대하고 있습니다Python - Pxssh - 원격 서버에 로그인 할 때 비밀번호를 거부하는 오류가 발생했습니다.

import pxssh 

ssh = pxssh.pxssh() 
ssh.login('192.168.1.10', 'username', 'password') 

: 여기 내 코드입니다 '.'

도움이된다면 알려드립니다. 감사합니다

답변

2

이 오류는 ssh를 위해 온 제거 해당 명령에게에서 known_hosts

또 다른 옵션은 Windows에 로그인되어 있는지 확인 명령 프롬프트를 의미를

[email protected]:~$ rm .ssh/known_hosts 

를 터미널을 열고 실행 lock.so입니다. 당신이 창에서 로그인을 시도하는 경우는 pxssh 원격 호스트에서 출력을 동기화하는 쉘 프롬프트를 사용

child = pexpect.spawn('ssh [email protected] -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\.*>') 

pexpect에 사용하는 것을 의미한다.

더 강력하게 만들려면 쉘 프롬프트를 $ 또는 #보다 더 고유 한 이라는 고유 한 것으로 설정하십시오. 이것은 대부분의 Borne/Bash 또는 Csh 스타일 쉘에서 작동합니다. http://www.pythonforbeginners.com/code-snippets-source-code/ssh-connection-with-python/

0

나는 당신의 진단에 맞는지 모르겠다. 나는 배너가 그것을 일으킬 수 있다고 생각하지 않지만, 잘못된 프롬프트가 그것을 확실히 할 수 있다고 생각한다. 확실한 코드를보십시오. 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?

관련 문제