目标:通过配置,使本地(一个局域网)机器上的pycharm进行远程开发。远程机器在另一个局域网中。有一个中转服务器(有外网IP)可以进行跳转,但是无法直接访问另一个局域网。如果你没有中转服务器,那么你可以考虑用内网穿透工具进行内网穿透。

本地先安装好openssh,下载地址OpenSSH,远程也都启动sshd监听对应端口,默认22

我本地机器需要访问的内网服务器,不能直接访问,需要通过一个网关服务器做跳板。

参考:

使用 SSH TUNNEL 打通公司和家里的网络

使用Pycharm和跳板机 连接内网服务器

ssh -D -L -R 差异

三种不同类型的ssh隧道

通过pycharm的SSH功能实现远程代码的调试和开发(使用远程开发环境,远程项目代码)

openssh配置文件解析

第一步,设置免密码登陆(不用每次连接输入密码)

可以使用ssh-keygen生成密钥对,将公钥发到服务器上,见末尾。参考openssh相关设置

或者在.ssh/config文件中写入(windows不知道怎么配置不成功,所以使用上面的方法)

跳板服务器上也要同样设置,因为要通过它转发到另一台机器上

ControlMaster 就是复用之前已经建立的连接。如果已经有一条连接,那么再连接的时候,就不需要再输入密码了。
ControlPersist 参数的含义就是在最后一个连接关闭之后也不真正的关掉连接,这样后面再连接的时候就还是不用输入密码。

Host *
    ControlPersist yes
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

第二步  设置ssh隧道

ssh -N -f -L 6000:<内网服务器ip>:22 -p <跳板机端口> username@<跳板机ip> -o TCPKeepAlive=yes


-N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-f 告诉SSH客户端在后台运行
-L 做本地映射端口
关于SSH建立管道参考

比如我要连接的内网服务器ip是192.168.1.6。跳板机ip是200.200.100.100,sshd监听端口是22 , 用户名是kd。本地要映射的端口是6666,命令就是

ssh -N -f -L 6666:192.168.1.6:22 -p 22 kd@200.200.100.100 -o TCPKeepAlive=yes

执行命令后让它保持后台运行的状态,我们就可以用ssh -p 6666 username@localhost访问内网服务器了。username是内网的用户名

第三步 配置pycharm远程开发目录

 

这里的root path是远程服务器的起始位置,你可以设置成你的home用户目录,这里设置成根。

mapping设置目录映射,将本地的目录和远程的目录对应起来。

设置好以后就可以从服务器下载代码,和上传代码了。可以设置自动上传

 

第四步 设置远程解析器

 

这里的path mapping直接不用设,从之前配置的远程开发环境导入即可。如果你要配置,那么这里的目录是以你之前设的那个pathroot为前缀的,也就是你设置的目录,pycharm会给你加上那个path root前缀。

其他上传设置参考

密钥对免密登录

利用本地的ssh-keygen生成密钥对。然后将公钥放到你的用户目录的.ssh/目录下,改名为authorized_keys。将.ssh权限设为700,authorized_keys权限改为600或者644。这时候修改配置,更改授权方式为密钥对。这里会遇到一个问题,就是私钥格式不对,要转成SSH2格式

更改方式,利用命令

ssh-keygen -e -f rsa_ssh > rsa_ssh2

将rsa_ssh转换成rsa_ssh2。

如果还是一样的错误,我是利用Xshell进行转换

你先导入你要转换的那个私钥,然后导出,选择格式

然后在pycharm中使用这个私钥即可

这样就可以

 

更多推荐