当开发环境是 Linux 时,直接在生产环境修改代码是一件非常头疼的事情——可能是无法直连 Github,没有中文输入法,抑或是像我一样找不到喜欢的 GUI 环境。这个时候如果可以使用 Windows 机器进行远程开发,将会方便不少。

方案一、 Samba & SSH

最简单、容易部署的方法当属 Samba 配合 SSH 了。使用 Samba 将工作目录映射到 Windows ,改动完成后使用 SSH 客户端执行 CMake 等一系列编译运行操作。这个方法虽然简单,但不能方便的 Debug 定位错误,对于稍大的项目来说可能不是一个好的选择。(当然如果你是 Pythoner ,定位问题可能相对会容易一些)

首先当然是要安装 Samba 。执行

$ sudo apt-get install samba samba-common

稍等片刻便可完成安装。完成安装后,新建用于登录 Samba 服务器的用户。稍后使用 Windows 访问 Samba 服务器时需要用到这个用户的凭据。执行指令后连续输入两次密码,即可完成创建。

$ sudo smbpasswd -a UserName
New SMB password:
Retype new SMB password:
Added user UserName.

接着修改 Samba 配置文件。好的习惯先备份默认配置文件

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

接着打开配置文件,添加如下内容

[home]
    comment = home directories
    path = /home/
    browseable = yes
    writable = yes

保存并退出。重启 Samba 后即可使用 Windows 进行连接,打开项目文件夹并编辑了。

至于 Windows 下的 SSH 客户端,强烈推荐 Terminus

方案二、Remote Developmen

由于该方案基于 SSH ,因此必须先配置好 SSH 访问后继续。

首先在 Powershell 执行 ssh-keygen 命令生成密钥对,生成位置和名字如果不需要更改连按三次回车即可。

Power Shell 生成密钥对
Power Shell 生成密钥对

然后把公钥 id_a.pub 中的内容复制到服务器 .ssh 文件夹中的 authorized_keys 文件中即可添加新公钥。这部分的详细步骤可以参见使用 Windows Terminal 进行 SSH 连接

接着添加 Visual Studio Code 插件的配置文件。首先点击左侧 Remote SSH 的图标后再点击高亮处的齿轮。

Code 的远程界面
Code 的远程界面

会弹出菜单让你选择需要编辑的配置文件,一般选第一个

选择配置文件
选择配置文件

选择之后开始添加配置信息。

参数的含义分别为:

  • Host 自定义连接的主机的昵称
  • Hostname 远程主机的IP地址
  • User 用于登录远程主机的用户名
  • Port 用于登录远程主机的端口
  • IdentityFile 上文生成id_a的路径
Host test
HostName 127.0.0.1
Port 8080
User root
IdentityFile ~/.ssh/id_a

如果需要多个连接,可按照如上配置多个。配置完成并保存后,左边栏中便会出现像我上图所示的远程主机图标。

双击连接后即可执行诸如打开文件夹一类的操作。注意按下 F5 选择编译器/解释器时选择远程主机上的编译器/解释器即可,甚至还能支持 gdb 。

方案三、WSL

如果不在乎生产环境和调试环境是否是一台机器(没人会这么做的吧!),还有一种比较折中的方案就是在本地运行一个 Linux 虚拟机。WSL 作为微软钦定的 Windows 下 Linux 环境,自然成了第一选择。

安装 WSL 发行版此处不在赘述。

鉴于 WSL 与 Visual Studio Code 有深度合作关系,因此只需要在 WSL 的 Bash 里输入 code 指令即可完成一切!

86 个评论

  1. When I initially commented I clicked the «Notify me when new comments are added»checkbox and now each time a comment is added I get several emails with the same comment.Is there any way you can remove people from that service?Appreciate it!

  2. I have to show my appreciation to the writer just for bailing me out of this type of instance. After looking out throughout the the web and finding tips that were not helpful, I figured my life was well over. Being alive without the presence of solutions to the issues you have solved by way of this write-up is a crucial case, as well as the kind that might have in a wrong way damaged my entire career if I hadn’t noticed the blog. Your own talents and kindness in taking care of a lot of things was very helpful. I don’t know what I would’ve done if I hadn’t encountered such a step like this. I can also at this time relish my future. Thanks so much for your skilled and results-oriented guide. I will not be reluctant to propose your blog post to anybody who desires guidelines on this topic.

  3. Youre so cool! I dont suppose Ive read something like this before. So good to seek out any individual with some authentic ideas on this subject. realy thank you for beginning this up. this website is one thing that is needed on the web, somebody with a little bit originality. useful job for bringing one thing new to the internet!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注