通过跳板服务器连接学校内网服务器并连接pycharm

推荐大家非常好的ssh入门教程,详细地介绍了本地转发

阮一峰大佬ssh

朱双印大佬的教程,也是老熟人了

更形象地解释本地转发

pycharm官方文档

扩展小知识:

转发=映射

”本地转发”表示ssh发起方(也就是本地)是映射转发者

”远程转发也叫反向隧道”表示ssh发起方是映射真身,远程是映射转发者

也就是ssh发起方是转发者叫本地转发,或本地映射,远程转发是ssh接受方是转发者也就是本地不是转发者

本地远程二者的区别朱双印大佬的博客写的非常详细,推荐

要补充一点是本地和远程命令的一致性

都是

SSH   -R或-L   [被映射ip:]被映射端口:映射ip:映射端口         要ssh的用户@要ssh的ip

记住这一条指令,其他的啥都好理解了

已知有两种方法

1.直接使用ssh -L的命令进行本地转发(local farwarding)

教程1

教程2

2.使用MobaXterm的隧道工具实现本地转发

设置非常简单

教程

更推荐大家使用软件MobaXterm来代替命令,其实本质上都是一样的,软件也是调用ssh命令,但软件更好管理。

优化:

1.对ssh服务器设置公钥,2.设置config

Host jlu
    HostName localhost
    Port 5000
    User zxy
    IdentitiesOnly yes

就像这样子,下次输入ssh jlu即可直接登录,本质就是下面提供了默认的参数,就像--p 5000这样

常见的错误

使用的localhost端口是已经被其他进程占用的端口

最开始使用的是6000端口,但是最开始一直无法start,正常情况下运作的话应该是start不亮,stop亮。如下图是正常工作的按钮,但6000端口无法正常工作。

原因在于6000端口有其他进程在占用导致不成功

小知识

输入命令

netstat -ano|findstr "6000"

表头,pid也就是最后一列代表了正在使用该端口的进程

 6000占用情况

 发现6000端口已经被相当多进程占用了,此时再用6000会极大概率造成冲突,这也是为什么隧道无法建成的原因,正常情况下一个端口只能被一个进程监听,但一个进程可以监听多个端口,是一个一对多的情况,但这里却不是这样,有的博客是说是完全可以一对多的

小知识(可选读):

 如上图是我用指令查找到的7890端口的情况,可以看到7890端口监听了0.0.0.0:0也就是所有端口,ESTABLISHED表示已经建立了连接,、就比如第4行,表示13036的clash在7890端口,与6779端口建立了连接。第三行表示13036的clash在7890端口监听所有ip地址的连接请求,也就是所有ip向13036发起连接,他都能接受。github桌面程序想要与github.com交换信息,需要从7890端口出去,由clash代替6779端口与github.com交换信息。上面都是基于进程的桌面端的,然后web浏览器的访问代理是需要打开windows设置中的使用代理服务器,让流量每次发送都通过代理服务器,这样才能让浏览器也达到一样的效果

端口与进程

解决方法

 使用没有进程被监听的本地端口,比如5000

pycharm配置

pycharm配置

1.建立ssh会话

2.解释器选择和映射

设置如下图

值得注意的是母选项卡为项目:项目名,这里的东西都是会随着项目文件夹而改变的设置,每个项目都是独立的,这些设置被存储在项目文件夹的.idea文件夹里,不同项目的设置当然无法同步。

 记得每一个新项目一定要填解释器的路径映射,将本地项目路径映射到远程项目,在执行代码时,一定要使用本地的文件,pycharm会自动映射本地路径到远程项目路径,实际上执行的是远程的映射文件,使用的是远程编译器。

 上图为Python路径

3设置sftp,内网服务器到本地的文件映射

这一步其实可以不用执行了,因为在设置解释器时就已经添加好了一个sftp

这里写用户路径

这里写项目路径,本地也新建一个同项目名相同的文件夹就好了,这个也是每次更换项目要重新设置,注意此处千万不要设置仅对此项目可见,否则会无法正常加载python解释器!

上图中zxy@127.0.0.1的那个sftp是解释器创建的关于项目文件的映射,我们可以用它也可以用自己创建的,只要文件路径映射的没问题就行

 再次对部署进行检查,主要就是看部署的路径对不对,路径=根路径+部署路径,此外这个部署配置必须设置为默认部署(上方的对勾要对他设置,默认部署是加粗的,如第一行配置所示),因为pycharm同时只能与一个部署配置同步,不设置好默认部署很可能东西传到其他部署配置指定的路径上了

顺便可以打开自动上传,经验证只要是本地和云端在已经同步的情况下(即状态已经是=了,后面会将)在本地做修改会自动上传到云端,小的py文件可以自动同步,另外本地添加删除py文件也能自动同步,意思就是在本地修改完py文件,直接运行就行,云端已经同步好了。

打开选项,可以看到远程主机的设置

每一个选项都能在官方的文档中找到详细地解释,覆盖最新文件我觉得应该可以关掉吧,应该是关掉更好?时间戳是肯定要保留的,也是作为两个文件相同的依据嘛。我觉得这里的设置都可以不动,因为目前没有必要,只要满足只在本地修改py文件的原则,就能够正确同步,其他的啥都好说。

pycharm官方文档

4.文件同步

 首先要设置好本项目的默认部署服务器,在下面选好

法1、点击下载自,进行下载

第一次的话左边本地的项目文件应该是空的,我们要直接将远程服务器的文件都给下载下来 ,但注意数据集最好单独操作,否则要下一年!

 法2(推荐)、使用同步对话框也可以达到全都下载、上传的功能

该方法管理更加方便,功能强大, 右击项目文件夹(云服务器上的还是本地创建的都行,上一步以及映射过了)

 

 此时会进入同步选择页面,我们可以自行选择是否同步

页面功能详解

总览

 这三个分别是同步选定项,全部同步,是否隐藏排除的文件

同步选定项只同步选中的该项
全部同步同步所有不为相等(也就是不为等号的文件)的文件,涉及到后面的知识
是否隐藏排除的文件指的是git ignore的文件

 比较依据一般都选择二进制内容,我们只要保证二进制内容一样就说明同步是正确的

文件操作状态 

标红的这一列非常重要,代表了文件的同步状态

 ​​​

1.等号

 说明二者是相等的,是否相等取决于比较依据,这里是文件二进制相等,文件就认为是相等的

2.其他符号

在文件不为等号即不同步时可以右击打开菜单栏,调整对该文件的操作

总览


第一组

第一行:从本地传到云端 

 

 第二行:从云端 传到本地

第二组

这两个和上面的箭头好像 没有区别

不等于号

这个标记千万要小心使用会同步删除左右两端的这个文件,使用时一定要小心以免误删

4.特殊同步-数据集

数据集文件太大,不适合上面的同步方法,我们需要生产压缩包再进行上传,再终端中输入解压命令,完成同步。本地映射可以没有数据集,但远程必须要有数据集,因为是在远程执行的嘛。

常见错误和注意事项:

注意:一定要在远程部署服务器和解释器都配置好的情况下再进行操作,比如下载包,进行编译什么的,否则可能会出现一些因为环境搞错而产生的错误。

1、有时会出现错误:No such file or directory

参考连接

要注意

1.使用本地的文件运行

2.配置好python解释器的映射

2、确定好再进行上传和下载

paycharm上传并不像百度网盘啥的有缓存的机制,上传直接覆盖原文件或者直接在上面进行修改,也就意味着一旦在上传、下载的时候终止上传、下载,那就会导致接收端的文件是不完整的,此时还要确定好重新传输,就像这一种

这zip就是在传输过程中还没有传完,是左边在向右边传,这个箭头反了是正常的,因为页面刷新他每次刷新都指向发送方,但我执行指令时箭头是向右的。我如果此时中断,右边就会有一个残缺版本的zip,就会导致两边不一致。

 小提示:一般刷新后箭头对着的是发送方,日期老的是发送方,文件大的是发送方,可以根据这个确定发送方和接收方,中断时重新传输

3.报错:     错误:Can't get remote credentials for deployment server

原因deployment server也就是部署服务器的sftp设置成了仅对项目可见

 全部把打钩给取消掉

远程调试展示图片

教程连接

要使用ssh -X命令(更推荐使用mobaxterm,他的每一次ssh连接都是ssh -X),据说是X11会自带在远程主机上创建一个图像输出端口,使用如下命令就可以看到图像输出端口开在了哪。

pycharm添加上我们要输出到刚刚ssh -X打开的端口,如下配置

 

 之后就可以正常本地展示了,mobaxterm开启的ssh -X终端不能关闭,否则输出端口将会跟着关闭了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值