LINUX.ORG.RU

Интерактивный шелл SSH на питоне с авторизацией по паролю в PyCharm

 , ,


0

1

Господа, признаюсь - я тугодум, поэтому не бейте сильно.

Я уже перегуглил сотни страниц и всё равно не получается. А нужно то мне всего ничего: из под PyCharm тестировать свой шедевр проектирования и изящных архитектурных решений программного обеспечения.

Так вот, когда я запускаю вот это

subprocess.run(«ssh root@192.168.103.250 -p 3593», shell=True)

то получаю вот это

ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory Permission denied, please try again. 
ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory Permission denied, please try again. 
ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory 
root@192.168.103.250: Permission denied (publickey,password).

Десятки запросов, сотни страниц и миллионы душевных терзаний в ночи не внесли ясности в ситуацию. Читать я , кстати, умею и понимаю, что среда не находит что то там где то там. И там этого действительно нет, я проверял. Рачевики что то невнятное внушает. Помогите, плиз, если еще не пьяные.

P.S. Если запускать через терминал, то всё работает (запрашивает пароль, как и положено). Но это ж гимор, щелкать туда сюда по окнам

★★

Последнее исправление: SpaceRanger (всего исправлений: 6)

Ответ на: комментарий от pfg

на это я пойтить не могу, ибо ретроградных взглядов и паролями деды пользовались ишшо. Если серьёзно, то никак не получится ключами пользоваться по некоторым причинам

SpaceRanger ★★
() автор топика
Последнее исправление: SpaceRanger (всего исправлений: 1)
Ответ на: комментарий от SpaceRanger

А что ему помешает?

Из твоего описания не очень понятно чего на самом деле надо добиться и что есть на «дальней» стороне.

У меня в тулзу прилетает вебсокет, который проксируется в открываемую наружу сессию SSH. Получается «SSH-консоль в браузере». Это достаточно интерактивно?

frob ★★★★★
()
Ответ на: комментарий от SpaceRanger
t = paramiko.Transport((host, port))
t.connect(username=uname, password=upass)
self.sendfd = t.open_session()
self.sendfd.get_pty()
self.sendfd.invoke_shell()

self.sendfd используется аналогично тому как любой открытый сокет в select. В данном конкретном случае я его засовывал в торнадовский io.loop.

frob ★★★★★
()