Я пытаюсь подключить SSH через python. Я попытался удалить ошибки с помощью разных методов, все еще изо всех сил пытающихся избавиться от ошибок. Это мой код:Ошибка в коде python при использовании pxssh для SSH
1) import pxssh
import getpass
def get_ssh():
s= pxssh.pxssh()
hostname = raw_input('IP: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (IP, username, password)
s.logout()
return True
2) s= pxssh.pxssh(timeout='time_out', maxread=20000)
s.SSH_OPTS += " -o StrictHostKeyChecking=no"
s.SSH_OPTS += " -o UserKnownHostsFile=/dev/null"
s.login ('IP', 'username', 'password')
В обоих случаях я получаю такие же ошибки. Также мне нужна информация о том, как передавать закрытый ключ и открытый ключ для аутентификации:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mit_test.py", line 11, in get_ssh
s.login (hostname, username, password)
File "/usr/lib/python2.7/dist-packages/pxssh.py", line 196, in login
i = self.expect(["(?i)are you sure you want to continue connecting", original_prompt,
"(?i)(?:password)|(?:passphrase for key)", "(?i)permission denied", "(?i)terminal type",
TIMEOUT, "(?i)connection closed by remote host"], timeout=login_timeout)
File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1316, in expect
return self.expect_list(compiled_pattern_list, timeout, searchwindowsize)
File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1330, in expect_list
return self.expect_loop(searcher_re(pattern_list), timeout, searchwindowsize)
File "/usr/lib/python2.7/dist-packages/pexpect.py", line 1401, in expect_loop
raise EOF (str(e) + '\n' + str(self))
pexpect.EOF: End Of File (EOF) in read_nonblocking(). Exception style platform.
<pxssh.pxssh object at 0x2840ad0>
version: 2.4 ($Revision: 516 $)
command: /usr/bin/ssh
searcher: searcher_re:
0: re.compile("(?i)are you sure you want to continue connecting")
1: re.compile("[#$]")
2: re.compile("(?i)(?:password)|(?:passphrase for key)")
3: re.compile("(?i)permission denied")
4: re.compile("(?i)terminal type")
5: TIMEOUT
6: re.compile("(?i)connection closed by remote host")
Что именно мне нужно делать? Я искал некоторые другие комментарии, но не нашел никакого решения. Кроме того, как я могу установить путь для частного ключа в аргументе входа? Может кто-нибудь мне помочь? Я прошел через разные должности link [link] (EOF when using pexpect and pxssh), но не смог получить решение. Спасибо за ваше время.
Вы пробовали ли соединение SSH с одного и того же хоста с тем же пользователем, что и ваша программа? – marekful
Кроме того, похоже, что когда проверка ключа хоста обнаруживает новый хост, как кажется в этом случае, вы должны сначала набрать «да» на терминале, чтобы перейти к аутентификации. Вы можете отключить это с помощью [SSH options] (http://linuxcommand.org/man_pages/ssh1.html) ('-O') – marekful
yes Я настроил базу данных с тем же именем и паролем хоста, и он работает. Теперь я хочу сделать SSH-туннель, используя python. –