 Mac 使用 VS Code 配合 Remote Development 插件连接 Windows 远程服务器
Mac 使用 VS Code 配合 Remote Development 插件连接 Windows 远程服务器
  鲁迅曾经说过:
前端开发, 必备两台显示器: 一台 Code, 另一台 View
# 现状
大佬说过的话, 咱肯定要照做呀(鲁迅: 我可没说过!). 以前确实是这样的: Mac 电脑编写代码并起服务, Windows 通过 ip 访问服务来浏览效果, 开发体验杠杠的
奈何天不遂人愿, 最近公司整改 Wi-Fi , 硬生生把上传速度从 10Mb/s 限制到 500kb/s , 这一下可苦了, 刷新一下页面要等一分多钟才能加载完成, 这整天啥也不用干了, 就等刷新时间了
无奈只能问问 IT 同事看看有没有办法解决, 毕竟这只是内网互传呀, 你说访问公网上传限制就限制一下吧, 内网还限制啥呀. 最后得到的结论就是:
不要用
Wi-Fi, 使用网线
好吧, 看来 Wi-Fi 以后是不能用了, 上京东看看扩展坞吧, 好家伙, 都得一百多, 这么一想, 刷新后等一分钟也是可以接受的嘛(🐶)
难道就没有别的办法了吗?
办法肯定是有的啦, 那就是使用 VS Code 的远程开发功能; 又省了一百大洋, 离买房计划又进了一步(😊)
# 介绍
微软在 PyCon 2019 大会上发布了 VS Code Remote , 从 1.35.0 版本正式提供可以在本地编辑远程开发环境的文件的功能, 所以首先确保你的 VS Code 版本是在这个之上的才能体验到.
VS Code 远程开发的工作原理, 大致是这样的:

官方文档: Visual Studio Code Remote Development (opens new window)
# Windows 准备工作 (Win 10)
# 安装 OpenSSH
从开始菜单打开 设置 , 然后选择 应用和功能 , 这里就有一个 管理可选功能 的选项.

点击之后便可以看到一个可选功能, 选择 OpenSSH 服务器即可, 一般情况下是没有安装的. 如果没有安装的话它会提示一个安装按钮, 这里我已经安装好了, 就提示了一个卸载按钮.

OK, 有了它, 直接点击安装即可完成 OpenSSH 服务器的安装.
当然如果你是想批量部署 Windows 服务器的话, 当然是推荐使用 PowerShell 来自动化部署了.
首先需要用管理员身份启动 PowerShell (在开始菜单右键选择)

使用如下命令看一下, 要确保 OpenSSH 可用于安装:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
输出应该是类似的结果:
Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
2
3
4
上面输出表示 OpenSSH 的客户端和服务端均不存在
我们这里只需要服务端: 如果 Server 的状态为 Installed, 就表示已经安装完成
观看下面的配置 OpenSSH 即可
如果状态为 NotPresent 就需要执行下面的命令来安装了
然后使用 PowerShell 安装服务器即可:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
输出结果类似:
Path          :
Online        : True
RestartNeeded : False
2
3
这样也可以完成 OpenSSH 的安装.
# 配置 OpenSSH
安装完成之后, 就需要进行一些初始化配置了, 还是以管理员身份, 使用 PowerShell 执行即可.
首先需要开启 SSHD 服务:
Start-Service sshd
然后设置服务的自动启动:
Set-Service -Name sshd -StartupType 'Automatic'
最后确认一下防火墙是否是放开的:
Get-NetFirewallRule -Name *ssh*
如果是放开的, 那么结果会提示 OpenSSH-Server-In-TCP 这个状态是 enabled .
好了, 完成如上操作之后我们就可以使用 SSH 来连接我们的 Windows 服务器了.
# Mac 准备工作
# 安装 VS Code 并下载插件
首先你需要有 VS Code , 没有的话尽快去官网下载. 这里有一份完整配置, 请查收: VSCode 完整版配置 | Henry
下载远程插件: Remote - SSH - Visual Studio Marketplace (opens new window), 轻轻点我安装
安装后在侧边栏和左下角均有显示

# 配置远程连接
首先点侧边栏的「远程资源管理器」之后点击「设置按钮」, 进入远程机器(代指 Windows , 下同)配置界面.

修改 ssh 配置文件, 用于登录远程机器, 各项含义在图中有说明.


点击连接, 登录远程服务器, 需要输入远程服务器的密码(后面会教你怎么免密登录), 输入确认即可. 第一次连接会做 VS Code Server 的初始化工作比较慢, 耐心等待.

登录成功, 即可像操作本地环境一样, 在 VS Code 客户端操作远程云主机上的文件. 注意, 此时「打开文件夹」已经是远端机器上的目录结构了.
安装的插件是在云服务器的 VS Code 上, 对本机的 VS Code 没有影响, 插件在远端提供功能, 比如代码审查、自动补齐等等, 而这所有的一切就像在本地操作一样, 对文件的更改也是直接操作的云主机上的文件, 丝滑连接.

# 配置 SSH 免密登录
按照上面的配置步骤, 每次连接到远程服务器, 都需要输入服务器登录密码很麻烦, 可以配置 SSH 免密登录, 免去每次输入密码的烦恼, 具体操作步骤如下:
# Mac 生成 ssh-key
在终端, 输入 ssh-keygen -t rsa 生成秘钥对. 关于这个命令可以参考: 如何生成 SSH key 及查看 SSH key - Rh 九尾鱼 - 博客园 (opens new window), SSH key 的介绍与在 Git 中的使用 - 简书 (opens new window), 这里不多赘述
打开生成的秘钥保存路径: cd ~/.ssh/ , 拷贝 id_rsa.pub 文件中的内容以备后面使用
# Windows 接收 ssh-key
打开秘钥保存路径: cd ~/.ssh/ , 如果没有的话也生成一下, 不过这个秘钥用不到, 只是需要这个路径.
新建文件: authorized_keys , 将从 Mac 拷贝的 id_rsa.pub 中的内容复制到该文件中
再次尝试远程连接, 如果实现免密登陆, 那么就不用往下看了, 安心享受丝滑般的编码体验吧
如果还是需要密码, 那么接着往下看
还是以管理员身份运行 PowerShell 打开 OpenSSH 配置文件
cd C:\ProgramData\ssh\
vim sshd_config
2
3
注释相关行:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
2
允许使用 sshd_config 文件中的 RSA 密钥访问 Windows :
PubkeyAuthentication yes
并禁用 ssh 密码登录:
PasswordAuthentication no
将更改保存到 sshd_config 后, 不要忘记重新启动 sshd 服务.
restart-service sshd
好了, 这次可以免密登陆啦
# 问题
# 长时间不操作就断开连接
在连接远程服务器的时候出现一段时间不操作连接断开的解决方法:
找到 sshd_config 配置文件进行编辑:
sudo vim /etc/ssh/sshd_config
在其中找到以下配置项目:
#ClientAliveInterval 0
#ClientAliveCountMax 3
2
去除注释并修改
ClientAliveInterval 60
ClientAliveCountMax 3
2
ClientAliveInterval 指定了服务器端向客户端请求消息的时间间隔, 默认是 0 , 不发送. 而 ClientAliveInterval 60 表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.
ClientAliveCountMax , 使用默认值 3 即可. ClientAliveCountMax 表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应.
重启 sshd service
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
2
或者
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
2
# 参考资料
- 如何使用 SSH 控制连接 Windows 服务器 | 静觅 (opens new window)
- 手把手教你配置 VS Code 远程开发工具, 工作效率提升 N 倍 - 知乎 (opens new window)
- Configuring SSH Key-Based Authentication on Windows 10/ Server 2019 | Windows OS Hub (opens new window)
- 使用 VS Code 配合 Remote Development 插件连接远程服务器(Mac/Linux+Windows) | Using VS Code with Remote Development Connect to Remote Server (Mac/Linux+Windows) - 天靖居士 - 博客园 (opens new window)
- Connecting to GitHub with SSH - GitHub Docs (opens new window)
- SSH key 的介绍与在 Git 中的使用 - 简书 (opens new window)
- 如何生成 SSH key 及查看 SSH key - Rh 九尾鱼 - 博客园 (opens new window)
- 使用 VS Code 配合 Remote Development 插件连接远程服务器(Mac/Linux+Windows) | Using VS Code with Remote Development Connect to Remote Server (Mac/Linux+Windows) - 天靖居士 - 博客园 (opens new window)
- windows 上安装 openSSH 服务_慧写代码-CSDN 博客 (opens new window)
- windows 下使用 vscode 远程连接 Linux 服务器进行开发 - 简书 (opens new window)
- How To Restart SSH Service under Linux / UNIX - nixCraft (opens new window)
