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

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

都是 code-server 惹的祸

问题发现

起因是我有一台系统为 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

太好了,解决了。

Comment