pycharm + ssh 跳板机 + 服务器

pycharm + ssh 跳板机 + 服务器

场景

在内网的本地通过在外网的跳板机(堡垒机)连接外网的服务器,希望调试、同步修改代码,避免出现: 使用pdb、print大法,本地修改代码再上传至服务器、出现bug再从服务器拉取下来,这些严重影响调试速度的情况。

步骤

1. ssh免密登录

参考: https://zhuanlan.zhihu.com/p/53792195,在本地的C:\Users\\.ssh的文件夹下建立config文件(.ssh文件夹没有,就新建个),然后在config里面输入如下代码:

Host <jump>
    HostName <x1.x1.x1.x1>
    User <xxx>
    Port <xxx>

Host <remote>
    HostName <x2.x2.x2.x2>
    User <xxx>
    Port <xxx>
    ProxyCommand ssh -q -W %h:%p <local>

这里的是指跳板机,你可以改成喜欢的名字,是跳板机的ip,UserPort都是登录跳板机的所提供的参数(注意不是随便填个22就完事的哦);指服务器,也是命名而已,可以随便改,是服务器的ip,UserPort都是从跳板机登录服务器所提供的参数。把本地登录跳板机的秘钥都放到.ssh文件夹中,如下图所示。

pycharm + ssh 跳板机 + 服务器_第1张图片

然后在本地的shell(注意是shell不是windows的cmd,win的powershell或许也可以,没试过),尝试ssh ,如果登录成功,说明本地 -> 跳板机的ssh隧道免密登录已经弄好了,接着是跳板机 -> 服务器的ssh免密登录,方法同本地一致:vim ~/.ssh/config,如果在跳板机上直接go ,那么恭喜你,本地 -> 跳板机的ssh隧道也搭建好了,不用再重新搭建了。

在这里插入图片描述
在这里插入图片描述

2. 隧道转发

参考: https://blog.csdn.net/qq_33039859/article/details/89503464的第7、8条,在shell里输入如下指令,进行ssh转发:

ssh -N -f -L <转发至本地的端口号, 随便起, 这里我是6000>:<x2.x2.x2.x2, 服务器ip>:<服务器端口> -p <跳板机端口> <登录跳板机的用户名>@<x1.x1.x1.x1, 跳板机ip> -o TCPKeepAlive=yes

3. pycharm的dev环境、解释器配置

注意 pycharm必须是Professional版才行

  • dev环境
    pycharm + ssh 跳板机 + 服务器_第2张图片
    pycharm + ssh 跳板机 + 服务器_第3张图片
    这里的ip是localhost,因为使用了ssh转发到了localhost的6000端口,按图填就好。
  • 解释器
    pycharm + ssh 跳板机 + 服务器_第4张图片
    可以create或者move,视情况而定。
  • 检查下
    pycharm + ssh 跳板机 + 服务器_第5张图片
    终于可以开心的调试了~

题外话

项目得全部下载后才可以调试,如果模型也放在项目文件里的话,一个模型也就1、2g吧,那这个下载同步就是灾难性的,项目初始化会是很慢很慢的。
pycharm + ssh 跳板机 + 服务器_第6张图片
所以有些时候,我用jupyter notebook来修改远程代码,这样要方便一些。

上述有误,实际上根本不用把整个项目都dump下来,可以按需dump对应代码。另外用jupyter notebook可以看看输出的图像,这点还是蛮方便的,现在我是全程用pycharm调试。

你可能感兴趣的:(学习笔记,#,linux,gpu,相关,ssh,pycharm,跳板机,服务器)