我的情况:经常要在远程 Windows 上执行修改 LUA 的操作。我自己又没有好的宽带,使用 RDP 经常会和其他人起冲突。

解决方案:在服务器上安装 OpenSSH 然后在本地用 vscode 远程进去进行写代码。

在服务器安装 OpenSSH

先下载Win32-OpenSSH 的 MSI 安装包,然后安装到服务器。
(直接下最新版就行,我找不到它的正式版 release)

如果服务器是 Administrator 用户

如果服务器运行的是真高级管理员 Administrator 用户,
就这样操作:

在服务端上找到文件夹 C:\ProgramData\ssh\
建立一个空白文件 administrators_authorized_keys ,在里面填上一行自己的公钥。
如果需要多个公钥就一行一个。

如果服务器是普通的管理员用户

还是找到 C:\ProgramData\ssh\sshd_config 配置文件
在里面注释掉最后两行:

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

其次是去 C:\Users\用户名\.ssh 文件夹,新建一个空白文件叫 authorized_keys ,在里面填上一行自己的公钥。
如果需要多个公钥就一行一个。

禁用密码登录

如果需要彻底禁用密码登录 ,需要修改配置文件 C:\ProgramData\ssh\sshd_config
里面找到并修改设置为 PasswordAuthentication no

如果没有禁用密码访问,可能每次连接的时候都要输入服务端上对应用户的 Windows 登录密码。

重启服务

接下来用服务端的任务管理器重启 sshd 服务。
每次修改配置之后都应该重启一次服务。

连接

在自己的电脑上运行命令行指令: ssh username@ip
需要加端口就是 ssh username@ip -p1234
username 指的是目标服务器上的用户,比如 Administrator 或者 abc ,不是本机用户名。

如果连接成功,则可以进入下一步。

VSCode Remote

安装 vscode 扩展:ms-vscode-remote.remote-ssh
安装之后点击 vscode 左下角的按钮,就可以 Connect To Host 了。
他默认读取的是 C:\Users\用户名\.ssh\config 这个配置文件。
可以在里面给你的连接起备注名。

连接之后如果需要经常重新打开指定的文件夹,可以 Save Workspace As 然后选择 To Local
这样从本地就可以直接双击打开 .code-workspace 文件进入远程环境了。

连接完成之后, vscode 会在远程服务器安装 code-server 作为一个后台辅助。
也就意味着可以安装vscode扩展到服务器上,并且扩展数据还是保存在服务器上的。

系统要求

VSCode Remote 需要 Windows 10 / Server 2016/2019 (1803+)
老版本上的 windows 无法安装 code server ,但是部分版本依然可以安装 Win32-OpenSSH 。

垃圾

vscode 有时候会抽风,在服务器电脑里留下大量重复的垃圾文件,可能占据C盘十几GB。
检测一下C盘的 C:\Users\用户名\.vscode-server\bin 文件夹。
code server 会把老版本全部留在里面。

以及 C:\Users\用户名\AppData\Local\Temp 文件夹。
code server 会把老版本、以及时不时抽风重装的文件全部留在里面,以七八个字母加一个小数点再加三个字母作为文件夹名字。
比如 jy4wbtpz.qef ,里面你能找到 node.exe

其他

如果遇到其他麻烦,请参阅:

或者也可以开启 ssh 的日志。
找到 sshd_config# Logging 下面两行,改成这样:

SyslogFacility LOCAL0
LogLevel DEBUG3

日志会输出在 C:\ProgramData\ssh\logs 里面。
问题解决了之后最好把日志注释掉,不然浪费C盘空间。