2017-01-27 4 views
11

Вопрос

Я пытаюсь включить X11 экспедиторских через PyCharmSSH Терминал, который может быть выполнен с помощьюКак включить пересылку X11 в сеансе SSH PyCharm?

"Tools -> Start SSH session..." 

К сожалению, это, кажется, нет никакого способа указав такие флаги, как я бы сделал в своей оболочке для включения X11:

ssh -X [email protected] 

Знаете ли вы какой-нибудь умный способ достичь этого?


Текущий грязный раствор

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

Например, я могу работать на моей внешней сессии SSH:

[email protected]:$ echo $DISPLAY 
localhost:10.0 

И чем набор на моей PyCharm терминале:

export DISPLAY=localhost:10.0 

или обновить DISPLAY переменный в Run/Debug Конфигурация, если я хочу запустить программу из графического интерфейса.

Однако я действительно не люблю это решение с помощью внешнего терминала SSH и вручную обновить DISPLAY переменного, и я уверен, что есть лучший способ достижения этой цели!

Любая помощь будет высоко оценена.


P.s. Создание псевдонима, как:

alias ssh='ssh -X' 

в моем .bashrc не заставит PyCharm, чтобы включить перенаправление X11.

+2

я узнал, что PyCharm не использует систему SSH. Вместо этого он использует [JSch] (http://www.jcraft.com/jsch/), который является чистой java-реализацией ssh.JSch поддерживает пересылку x11, по умолчанию она не включена. Один из способов решить вашу проблему - заменить jsch.jar, который связан с pycharm с пользовательской версией с разными значениями по умолчанию. –

+0

Спасибо @OliverWeissbarth за ваш комментарий! Если бы вы были настолько добры, чтобы предоставить немного больше деталей и пошаговое решение в реальном ответе, я был бы очень рад отметить его как одобренный! – Gengiolo

+0

У них есть открытый вопрос об этом здесь: https://youtrack.jetbrains.com/issue/PY-13869 Похоже, в настоящий момент официальное решение отсутствует :( – MZHm

ответ

2

Так что я смог исправить jsch и проверить это, и он отлично поработал. Вот что вам нужно сделать ниже в системе Mac OS или Linux.

wget http://sourceforge.net/projects/jsch/files/jsch/0.1.54/jsch-0.1.54.zip/download 
unzip download 
cd jsch-0.1.54 
sed -e 's|x11_forwarding=false|x11_forwarding=true|g' -e 's|xforwading=false|xforwading=true|g' -i src/main/java/com/jcarft/jsch/*.java 
sed -e 's|<version>0.1.53</version>|<version>0.1.53</version>|g' -i pom.xml 
mvn clean package 

Это создаст jsch-0.1.54.jar в target папке. Вам нужно скопировать это в папку вашего пикамера lib. Когда вы это сделаете и создадите соединение, вы включите X11. Убедитесь, что резервное копирование оригинального файла

X11 Enabled

+0

Привет, Тарун! Спасибо за ваше решение. Теперь переменная $ DISPLAY, кажется, будет автоматически установлена, но если я запустил команду вроде «eog img.png» Я получаю: «** (eog: 40789): ПРЕДУПРЕЖДЕНИЕ **: Не удалось открыть X-дисплей». Знаете ли вы, как это исправить? – Gengiolo

+0

@ Gengiolo, я тестировал и, возможно, вам нужно позвонить е Дополнительные методы: http://www.jcraft.com/jsch/examples/X11Forwarding.java.html. К сожалению, у меня нет времени для отладки по этой проблеме. Но это должно дать вам направление для изучения и того, как это нужно сделать. –

+0

благодарим вас за ваши усилия, вы заслуживаете награду! :) Я собираюсь изучить его и обновить этот поток как можно скорее! – Gengiolo

Смежные вопросы