解决 Windows 添加环境变量后在 VS Code 远程 SSH 环境不生效问题

解决 Windows 添加环境变量后在 VS Code 远程 SSH 环境不生效问题

问题发现

起因是我有一台系统为 Windows 10 专业版的远程开发测试机器,在安装了 Nmap 后,发现通过 VS Code 的“远程资源管理器”连接,在终端中仍然无法被识别 Nmap 命令。搜索了一些类似问题的解决方案发现还是没有解决,于是自己开始进一步排查。

排查过程

检查用户是否为同一个

首先检查一下环境变量写入的用户和 SSH 登录的用户是不是同一个,比如我的 Nmap 是登录用户A的时候安装的,而 SSH 连接的是Administrator,这当然不行。

所以我:

  1. 手动在AdministratorPATH中也写入了 Nmap 的路径;
  2. 接着按照网上说的方法,在终端里输入set PATH=C
  3. 然后重新 SSH 登录。

再次输入 Nmap 命令,发现用 SSH 工具连接的 Shell 里已经可以识别 Nmap 命令了:

image.png

但是 VS Code 环境中问题依旧:

(这里忘记截图了)

罪魁祸首是 Code-Server

这我就纳闷了,难道 VS Code 的 SSH 有什么神秘的地方吗?

还真有。

image.png

仔细观察了 VS Code 连接远程资源管理器的输出日志,我发现了这一行:

Found running server(pid=7572)

英语四六级均已通过的高手们应该看出来了,VS Code 连接到远程主机后,会在目标主机上安装 Code Server 的服务,然后这个服务是不会随着连接关闭而结束的,他会一直在跑。我们合理的怀疑,这个 running 的 server 使用的环境变量依旧是我们修改之前的那些环境变量。

解决办法

那么我们就手动杀死这个 code-server 让他重新启动就可以了。

tskill <pid>

对于我而言就是:

tskill 7572

然后重新连接远程主机,尝试 nmap 命令:

image.png

太好了,解决了。

LICENSED UNDER CC BY-NC-SA 4.0