如何以不同于认证用户的其它用户身份使用 VSCode 远程资源管理器

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

27909d489217cdef3acdb0ca4737835c.png

在使用远程服务器(例如: 虚拟机)时,有时您需要切换到不同的用户,例如:短时间内获得更高的权限。


通常可以使用以下命令之一来完成:

$ su <different-user>
$ sudo -i -u <different-user>

但如果你想使用 VSCode 时更轻松地探索文件系统和编辑代码,这就不那么简单了。比如:登录用户为 mike,而您想在 VSCode 资源管理器中访问 root 用户的主目录。

首先,您需要在 VSCode 配置中启用一些标志,你可以在用户界面 ( 用 ctrl+, 打开设置,搜索 Remote.SSH ) 中启用:

18f71ee14744b9c9893e0f2e3d02d339.png

settings.json 中编辑:

"remote.SSH.useLocalServer": true,
"remote.SSH.enableRemoteCommand": true,

然后,打开 SSH 配置文件(默认为 /home/$USER/.ssh/config),在主机中添加 RemoteCommandRequestTTY 选项。

例如:

Host example.com
  HostName example.com
  IdentitiesOnly=yes
  User my_user
  RequestTTY yes
  RemoteCommand sudo -i -u other_user

注:RequestTTY 选项的作用是指定是否为会话请求伪 TTY。参数可以是:no(从不请求 TTY)、yes(当标准输入为 TTY 时始终请求 TTY)、force(始终请求 TTY)或 auto(打开登录会话时请求 TTY)。该选项与 -t 和 -T 标志相同。如果你不加上这个选项,通过 SSH 命令行登陆时将无法正常登陆。

如果远程服务器可以访问互联网,那就已经配置完成了。

否则,您需要采取以下两个步骤中的一个。

  1. 远程服务器可通过代理访问互联网

在这种情况下,请在需要切换用户的主目录下创建一个 .wgetrc 文件。例如: /home/other_user/.wgetrc,内容如下:

use_proxy=on
http_proxy=http://proxy.host:<port>
https_proxy=http://proxy.host:<port>

这是必要的,因为 VSCode 会在会话开始时使用 wget 下载必要的二进制文件。

  1. 远程服务器根本无法访问互联网

在这种情况下,您需要在本地下载 VSCode 服务器文件,然后将其复制(例如: 使用 scp)到服务器,具体步骤如下:

# 本地下载
$ commit_id=f1e16e1e6214d7c44d078b1f0607b2388f29d729
$ curl -sSL "https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stable" -o vscode-server-linux-x64.tar.gz
$ scp  vscode-server-linux-x64.tar.gz user@remotehost:/home/user/

# 远程服务器操作
$ commit_id=f1e16e1e6214d7c44d078b1f0607b2388f29d729
$ mkdir -p ~/.vscode-server/bin/${commit_id}
$ tar zxvf ~/vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/${commit_id} --strip 1
$ touch ~/.vscode-server/bin/${commit_id}/0

更详细步骤可参考:https://stackoverflow.com/a/57601121/8175198

或者,先用 VSCode 远程 SSH 连接正常用户,让它传输文件,然后将文件复制到另一个用户的主目录。

$ cp -r /home/mike/.vscode-server/ /root/

您还可以将默认设为在客户端上下载 VSCode 服务器文件,并使用 scp 将其传输到主机,而不是先尝试 wget 将其下载到主机上。

af85634ee2ec203183f2e5590779b840.png

您也可以更改这些文件的安装位置

1afc5cf04b25dafb4536c67a85cc0e7b.png

参考文档:

  1. https://medium.com/@krisztian.sala/vs-code-remote-ssh-as-another-user-57d449e20fb1

  2. https://stackoverflow.com/a/57601121/8175198

  3. https://github.com/b01/dl-vscode-server

0e06206959d87cbdabc987fbb73f38ad.gif

🚀 最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

🌟『极客视界』科技达人必备综合资讯指南,等你来探索!访问网址 https://bestgeek.org 即可打开新世界。

📕 关注『奇妙的 Linux 世界』公众号,带你开启有趣新生活!更多好用好玩的软件资源,可访问 https://666666.dev 免费获取。

c8cc9810abaf80b731d29230e8e0f265.png

你可能还喜欢

点击下方图片即可阅读

90ccad75359c5c0fe18c31aa53f144f5.png

无需 Dockerfile,打造你的专属即时容器镜像 : Nixery 中文使用指南

b13fa0c46fdbed178d05b044f84b2d9d.png

点击上方图片,『美团|饿了么』大额外卖红包天天免费领

bd69030f56693cb3c42701494a1ce813.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值