我尝试通过 PyCharm SSH终端启用 X11转发,可以通过
执行"Tools -> Start SSH session..."
不幸的是,似乎没有办法像我在shell中那样指定标志来启用X11 Forwarding:
ssh -X user@remotehost
你知道一些聪明的方法吗?
我发现唯一的脏黑客是使用X11转发打开外部ssh连接,而不是手动更新环境变量 DISPLAY 。
例如,我可以在我的外部ssh会话上运行:
vincenzo@remotehost:$ echo $DISPLAY
localhost:10.0
而不是在我的PyCharm终端上设置:
export DISPLAY=localhost:10.0
或更新运行/调试配置中的 DISPLAY 变量,如果我想从GUI运行该程序。
然而,我真的不喜欢这种使用外置ssh终端并手动更新 DISPLAY 变量的解决方案,我确定在那里&# 39;更好的实现方法!
非常感谢任何帮助。
P.S。制作别名:
alias ssh='ssh -X'
我的 .bashrc 中的并不强制PyCharm启用X11转发。
答案 0 :(得分:4)
所以我能够修补jsch并对其进行测试并且效果很好。
您需要执行以下操作才能在PyCharm中使用X11转发:
- 如果您还没有X服务器,请安装它。在Windows上,这可能是VcXsrv项目,在Mac OS X上是XQuartz项目
- Download或编译jsch包。请参阅下面的编译说明
- 在pycharm的jsch-0.1.54.jar
文件夹中备份lib
,并将其替换为修补版本。使用远程环境启动Pycharm,并确保删除可能在运行/调试配置中设置的DISPLAY
环境变量的任何实例。
以下是在安装了Maven的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/jcraft/jsch/*.java
sed -e 's|<version>0.1.53</version>|<version>0.1.54</version>|g' -i pom.xml
mvn clean package
这将在jsch-0.1.54.jar
文件夹中创建target
。
答案 1 :(得分:2)
更新2020: 我找到了一个非常简单的解决方案。可能是由于更新了PyCharm版本(2020.1)。
X11Forwarding
:在/etc/ssh/sshd_config
中设置X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
~/.ssh/config
中设置ForwardX11 yes
答案 2 :(得分:1)
X11 forwarding was implemented in 2021.1 适用于所有基于 IntelliJ 的 IDE。如果它仍然不起作用,请考虑在 youtrack.jetbrains.com 上创建一个新问题。
顺便说一下,关于修补 jsch
的 the piece of advice 不适用于 2019.1 之后的任何 IDE。
答案 3 :(得分:0)
并行打开MobaXTerm并在启用X11转发复选框时连接。现在,PyCharm将通过MobaXTerm X11服务器转发显示内容。 直到PyCharm才添加此“简单”功能。
此外,在PyCharm运行配置中设置DISPLAY环境变量,如下所示: DISPLAY =本地主机:10.0 (应该通过服务器端的命令echo $ DISPLAY来获得右侧)