paramiko и python ssh

Я пытаюсь подключить установку ssh-соединения с главной машиной. Вот мой код:

def make_connection_paramiko(Username, Password): ssh = paramiko.SSHClient() hostname = "username@hobbes.cs.ucsb.edu" ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts"))) try: ssh.connect(hostname, port = 22, username = 'username', password = 'password') except paramiko.AuthenticationException: print "Login failed! %s\t%s" %(username, password) except socket.timeout: print "Socket connection failed" #print str(value) +"\t"+ message else: print "Login Successful! %s\t%s" %(username, password) ssh.close() 

Но по какой-то причине я продолжаю получать следующую ошибку:

 Traceback (most recent call last): File "pass_crack.py", line 56, in <module> begin_cracking(wordlist, username) File "pass_crack.py", line 45, in begin_cracking make_connection_paramiko(username, "hello") File "pass_crack.py", line 29, in make_connection_paramiko ssh.connect(hostname, port = 3600, username = 'xxxxxxx', password = 'xxxxxx') File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 282, in connect for (family, socktype, proto, canonname, sockaddr) in socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM): socket.error: [Errno 2] No such file or directory 

Я пытаюсь подключиться с помощью paramiko с python, и я использую Ubuntu 13.04. Я не уверен, что не так, когда я пытался подключиться, используя те же значения для имени хоста, имени пользователя и пароля, используя pxssh что работает соединение, поэтому почему он не работает с paramiko?

заранее спасибо

One Solution collect form web for “paramiko и python ssh”

Ответ

Это не имя хоста:

 hostname = "username@hobbes.cs.ucsb.edu" 

Вместо этого это строка соединения. Удалите username@ , и он должен подключиться снова.

Дальнейшая информация

Помните, что вы всегда можете посмотреть исходный код . Здесь вы можете увидеть, что имя хоста передается непосредственно в вызов raw-сокета :

 socket.getaddrinfo(hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM) 

Посмотрев на help для socket.getaddrinfo , мы видим, что он пытается разрешить фактическое имя хоста, похожее на синтаксис, необходимый для nslookup :

 >>> print socket.getaddrinfo.__doc__ getaddrinfo(host, port [, family, socktype, proto, flags]) -> list of (family, socktype, proto, canonname, sockaddr) Resolve host and port into addrinfo struct. 

Наконец, я бы рекомендовал рассмотреть возможность включения debugging в paramiko и других базовых библиотеках:

 >>> import logging >>> logger = paramiko.util.logging.getLogger() >>> logger.setLevel(logging.DEBUG) 
  • paramiko no существующее исключение сеанса
  • Python Fabric: пропустить логины, требующие пароли
  • Как перенести файл на ssh-сервер в ssh-соединение, сделанное paramiko?
  • Как определить из приложения python, если выполняется пересылка X-сервера / X?
  • Видя escape-символы при нажатии клавиш со стрелками в оболочке python
  • Устранение очистки нитей на парамико
  • Отправка пароля через SSH или SCP с помощью подпроцесса.
  • библиотеки python для обработки ssh
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.