本地:Ubuntu 16.04
远程服务器:Ubuntu 16.04
******************************************************************************
- 远程服务器上安装
sudo apt-get install xauth
sudo apt-get install xorg
- 在本地笔记本上打开终端,输入命令:连接上远程服务器,- Y表示建立可信客户端
ssh -Y user_name@remote_ip
连上之后,打开ssh文件:
vi /etc/ssh/sshd_config
找到下面这几行,并去掉注释,若没有,则加上这几行
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
修改之后,重启ssh
service ssh restart
在终端中输入xeyes
,可以在本地桌面显示那一双眼睛(如果没有这个命令,可以安装sudo apt-get install xeyes
),于是确定了本地电脑和服务器之间的X11 forwarding服务是调通了的
- 然后输入
echo $DISPLAY
我这里显示是:
echo $DISPLAY
localhost:10.0
如果这里没有这个环境变量,可以手动设置一个export DISPLAY=localhost:10:0
这时候,在连接上远程服务器的ssh命令行上输入xeyes
,检测是否屏幕上出现一双眼睛
若还是没有,本地客户端可以有两种方法保证ssh可以进行X11转发:
修改/etc/ssh/ssh_config
或~/.ssh/config
文件
前者是全局配置,后者为当前用户配置,二者都存在的情况下,后者会覆盖前者的配置。
有两个选项需要注意:
ForwardX11
ForwardX11Trusted
这两个的作用是相互影响的
ForwardX11 | ForwardX11Trusted | ssh_mode |
---|---|---|
no | no | disabled |
no | yes | disabled |
yes | no | untrusted |
yes | yes | trunsted |
- 复制DISPLAY的输出,再获取当前matplotlib的后端配置,我这里的是 Qt5Agg
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print(matplotlib.get_backend())
Qt5Agg
>>> exit
-
配置pycharm,RUN --> Edit Configuration --> Environment --> Environment Varibles,添加环境变量,如下图所示:
- 最后,写代码测试,注意在使用 matplotlib 时应该提前使用其后端,如下代码前2行所示:
import matplotlib
matplotlib.use('Qt5Agg') #这一句应该放在 import pyplot前面
import matplotlib.pyplot as plt
import numpy as np
plt.plot(np.arange(50))
plt.show()
- 先得在命令行中建立可信端链接(-p后面指定端口,默认为22可以不指定),当是实验室等多用户参与,不具有root权限的用户应该使用
-Y
来建立可信客户端
参考:https://blog.csdn.net/rinai/article/details/23169823?utm_source=blogxgwz9
ssh_args | ssh_mode |
---|---|
ssh | disabled |
ssh -X | untrusted |
ssh -Y | trunsted |
ssh -Y -p2345 user_name@remote_ip
-
然后run,就可以在本地笔记本pycharm中显示matplotlib图片了
网友评论