事情起因
最近一直在用jupyter notebook使用服务器docker容器中的环境跑代码。后面需要设计界面要用到pyqt,这时候又无法连接到服务器的图形界面,所以就想到用本地的pycharm使用docker容器中的环境。
特别之处
网上已经有很多本地pycharm使用远程服务器上docker环境的教程了,但是我的情况有点不同,就是服务器没有外网地址,要想从外网访问要先访问另一台有外网地址的服务器,然后这台服务器再转发到目标服务器上。
实现
根据配置本地配置jupyter notebook的过程想到能不能使用ssh tunnel实现呢,经过实验发现是可行的。想法是将本地的一个端口a和外网服务器上的ssh地址b连接,然后外网服务器b自动转发到内网服务器后再连接到docker容器中关联的ssh端口c。这样在本地ssh连接a端口后就会转发到外网服务器端口b,b是配置好的转发,就会到内网服务器d,d根据自己的转发规则又会转发到最终目标c。
这里需要用到mobxterm和pycharm专业版
- forwarded port 是本地要ssh的端口a
- ssh server是外网服务器地址b
- remote server是docker容器的地值c
连接测试
这里要先把mobxterm上的隧道打开,然后在命令行 ssh连接
可以理解为要通过ssh连接到一个服务器上需要传递给它
- 用户名:root
- 地址:
- 端口:
地址和端口都已经在转发速到里面配置好了
这些做完之后就可以按照普通的教程配置pycharm连接了,get!!!!!
补充
在pycharm上使用远程编译器,我开始认为原理是本地文件运行,然后将需要的部分上传到服务器中运行(配置SFTP的作用),不需要把整个文件项目都上传的服务器。但施行之后想到每一次运行这样上传效率会更低,不如一次性都上传上去到服务的临时目录中,然后本地修改后同步到服务器中,运行后结果再同步到本地代码中,这样更好。最后验证是正确的,在服务器上找到了该目录。
。。。。IDE不能回传图形界面,,,,此贴终结
|