x11 переадресация с paramiko
я пытаюсь запустить команду сparamiko
это должно быть в состоянии открыть окно X. Сценарий яЯ использовал бы что-то следующее:
import paramiko
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect('192.168.122.55', username='user', password='password')
transport = ssh_client.get_transport()
session = transport.open_session()
session.request_x11()
stdin = session.makefile('wb')
stdout = session.makefile('rb')
stderr = session.makefile_stderr('rb')
session.exec_command('env; xterm')
transport.accept()
print 'Exit status:', session.recv_exit_status()
print 'stdout:\n{}'.format(stdout.read())
print 'stderr:\n{}'.format(stderr.read())
session.close()
К сожалению, когда я запускаю скрипт выше, я получаю такой вывод:
Exit status: 1
stdout:
SHELL=/bin/bash
XDG_SESSION_COOKIE=8025e1ba5e6c47be0d2f3ad6504a25ee-1347286654.617967-1932974971
SSH_CLIENT=192.168.122.1 58654 22
USER=user
MAIL=/var/mail/user
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/user
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/user
LOGNAME=user
SSH_CONNECTION=192.168.122.1 58654 192.168.122.55 22
DISPLAY=localhost:10.0
_=/usr/bin/env
stderr:
xterm: Xt error: Can't open display: localhost:10.0
Если я запускаю следующую команду в терминале:
ssh -X [email protected] 'env; xterm'
затем я получаю те же переменные среды (хотя некоторые порты изменились), поэтому яЯ бы сказал, что мое окружение правильное. Однако я'мне все еще не хватает чего-то сделатьparamiko
работа с пересылкой x11.
Я попробовал пару вещей:
Использоватьhandler
параметр вrequest_x11
: кроме печатных значений, я неполучить дальше, чем с обработчиком по умолчанию.Использоватьauth_cookie
параметр вrequest_x11
: попытался жестко закодировать значение cookie, которое использовалось в соответствии сxauth list
выход. Идея сделать это состояла в том, чтобы избежать проблем, которые могут произойти в соответствии со строкой документации вparamiko
сам:Если вы опустите auth_cookie, будет сгенерировано, использовано и возвращено новое безопасное случайное 128-битное значение. Вам нужно будет использовать это значение для проверки входящих запросов x11 и замены их фактическим локальным файлом cookie x11 (который требует некоторого знания протокола x11).
Есть ли что-то еще, что я мог бы сделать, чтобы это работало или решало проблему?
Примечание: это было ранее задано в:
суперпользователя: единственный ответ указывает наrequest_x11
документация яЯ уже пытался использовать безрезультатно.переполнение стека: принятый ответ предлагает использоватьhandler
параметр, но этоS не так.GitHub: ответа не было более года.