在使用远程服务器(例如: 虚拟机)时,有时您需要切换到不同的用户,例如:短时间内获得更高的权限。
通常可以使用以下命令之一来完成:
1 | $ su <different-user> |
但如果你想使用 VSCode
时更轻松地探索文件系统和编辑代码,这就不那么简单了。比如:登录用户为 mike
,而您想在 VSCode 资源管理器中访问 root
用户的主目录。
首先,您需要在 VSCode
配置中启用一些标志,你可以在用户界面 ( 用 ctrl+,
打开设置,搜索 Remote.SSH
) 中启用:
或 settings.json
中编辑:
1 | "remote.SSH.useLocalServer": true, |
然后,打开 SSH
配置文件(默认为 /home/$USER/.ssh/config
),在主机中添加 RemoteCommand
和 RequestTTY
选项。
例如:
1 | Host example.com |
注:
RequestTTY
选项的作用是指定是否为会话请求伪 TTY。参数可以是:no(从不请求 TTY)、yes(当标准输入为 TTY 时始终请求 TTY)、force(始终请求 TTY)或 auto(打开登录会话时请求 TTY)。该选项与 -t 和 -T 标志相同。如果你不加上这个选项,通过 SSH 命令行登陆时将无法正常登陆。
如果远程服务器可以访问互联网,那就已经配置完成了。
否则,您需要采取以下两个步骤中的一个。
- 远程服务器可通过代理访问互联网
在这种情况下,请在需要切换用户的主目录下创建一个 .wgetrc
文件。例如: /home/other_user/.wgetrc
,内容如下:
1 | use_proxy=on |
这是必要的,因为 VSCode
会在会话开始时使用 wget
下载必要的二进制文件。
- 远程服务器根本无法访问互联网
在这种情况下,您需要在本地下载 VSCode
服务器文件,然后将其复制(例如: 使用 scp
)到服务器,具体步骤如下:
1 | # 本地下载 |
更详细步骤可参考:https://stackoverflow.com/a/57601121/8175198
或者,先用 VSCode
远程 SSH
连接正常用户,让它传输文件,然后将文件复制到另一个用户的主目录。
1 | $ cp -r /home/mike/.vscode-server/ /root/ |
您还可以将默认设为在客户端上下载 VSCode 服务器文件,并使用 scp
将其传输到主机,而不是先尝试 wget
将其下载到主机上。
您也可以更改这些文件的安装位置
参考文档: