背景
目前公司对代码安全性有要求,只能在云主机上开发。申请了两台主机,分别为windows 跟 linux系统,用于分别开发两个环境下的程序(因为用了cgo所以无法交叉编译)。 linux系统云主机打开带界面的程序就直接卡死。
两台云主机属于同一子网可以互通,就想到用远程开发的方式来在windows机器上远程开发调试。但是两台机器均不能联通公网,所以需要在离线模式下进行配置。
准备
两台主机,能够通网络。我的例子是一台window系统一台 linux系统
windows作为远程开发客户端,linux作为远程开发的服务端
windows系统官网下载goland ide 通过file - Remote development - SSH Connection 进入
或者 下载 jetBrains GetAway 直接进入
本地还需要为远程服务端下载一个运行的ide 这里同样下载同版本的goland
(注:因为离线模式对ide的版本本身有要求,所以尽量选择最高版本的goland,本文所使用的为2023.2版本)
过程
本文选择通过ide来操作
file - Remote Development
这里填入你的远程服务器信息
链接上你的远程服务器后,因为是离线环境,所以上传你刚刚为远程服务器下好的对应的ide,并且选择你的远程工程目录
接着选择Start IDE and Connect 进行连接。
连接的过程中,ide默认会下载jetbrains client 的组件,如果你本机可以联网,那么到这里就结束了。如果不能联网,那么会下载失败。
按照jetbrains 官方文档描述,下载失败,需要采用他的离线模式来进行解决
1.首先 下载 jetBrains client 下载器 注:这个下载器只支持x86-64 的linux版本,其他版本官方并未提供
2.在一台可以联通公网的x86-64 linux 机器上解压下载的这个下载器,并分别运行脚本
/bin/bash jetbrains-clients-downloader --products-filter GO --build-filter 223.7255.1 --include-eap-builds --platforms-filter linux-x64 Desktop/backends
jetbrains-clients-downloader 就是下载器的执行文件
--products-filter GO 表明下载的是goland的client,如果想用其他产品如IDEA 则这里需要改成对应值
--build-filter 223.7255.1 产品的编译版本 打开ide - help -about 展示的信息中就有
--platforms-filter linux-x64 下载的client端适配的版本 。比如本文client端是windows 那么这里就要改成windows-64
Desktop/backends 是下载的东西本地存放的目录,可以根据自己情况进行修改
执行完毕后,可以将你下载的文件夹下的所有东西打包通过硬盘等方式放到你的客户端上的固定目录下,假设这次放在C:\XXXX目录下
然后进行配置。本文是windows 所以就只展示windows的配置(其他系统的配置参考jetbrains官方文档)
在windows进行以下注册表的配置,win + R 输入 regedit 打开注册表。
a、新建项:计算机\HKEY_CURRENT_USER\SOFTWARE\JetBrains\RemoteDev
b、创建字符串值: 数值名称:clientDownloadUrl,数值数据:file:///C:/XXXX,这里XXXX就是是你存放下载的 JetBrains Clients的文件夹, file:/// 的意思是从本地文件系统读取。
c、创建字符串值: 数值名称:pgpPublicKeyUrl,数值数据:file:///C:/XXXX/KEYS
修改注册表后,重启IDE 再链接就正常了,可以本地开发调试远程代码。
注意检查你下载的文件中一定要有这几个文件,如果没有的话,可以尝试重新运行第一步进行下载,文件名中的那一串数字就是你在第二步中查看的版本号,这里要下载对应版本的,不匹配的话也不生效
其他问题
goland 会要求远程服务器git 版本要大于 2.17.0,否则git功能不支持。