VSCode Remote-SSH扩展:连接时非终端执行远程命令及root权限图形化操作远程文件的实现方案咨询
VSCode Remote-SSH扩展:连接时非终端执行远程命令及root权限图形化操作远程文件的实现方案咨询
我之前也碰到过一模一样的需求——终端里sudo能看全文件系统,但VSCode图形界面不行,还踩过RemoteCommand被忽略的坑,下面几个不用写扩展的方法亲测有效,你可以试试:
方案一:通过SSH配置文件直接以root身份连接
这个方法最省心,直接在SSH配置里让Remote-SSH连接后自动切换到root环境,还能解决RemoteCommand被忽略的问题:
- 打开本地的SSH配置文件:
- Linux/macOS:
~/.ssh/config - Windows:
C:\Users\<你的用户名>\.ssh\config
- Linux/macOS:
- 添加一个新的Host配置(替换掉尖括号里的内容):
Host my-server-root HostName <你的服务器IP/域名> User <你的普通用户名> RequestTTY yes # 必须加这个,因为sudo需要终端交互 RemoteCommand sudo su - # 连接后自动切换到root用户 - 保存配置后,打开VSCode的命令面板(快捷键
Ctrl+Shift+P),选择「Remote SSH: Connect to Host...」,然后选你刚配置的my-server-root - 第一次连接时,先输入普通用户的登录密码,再输入sudo的密码(如果你的用户需要验证sudo密码的话),之后VSCode就会以root身份加载远程环境,文件浏览器就能访问所有root权限的文件了,编辑、搜索这些图形化功能都能用。
小提示:如果不想每次输sudo密码,可以在远程服务器的
sudoers文件里给你的用户配置免密sudo(比如添加your-user ALL=(ALL) NOPASSWD: /bin/su -),但要注意安全风险。
方案二:已连接普通用户时,临时切换到root环境
如果已经用普通用户连接了远程服务器,不想重新配置连接,可以用这个方法快速切换:
- 在VSCode的远程终端里(底部状态栏点「Terminal」打开),运行以下命令:
这里sudo code --user-data-dir=/tmp/vscode-root ./tmp/vscode-root是临时目录,用来存储root用户的VSCode配置,避免和普通用户的配置冲突。 - 运行后VSCode会弹出提示,问你是否要连接到新的远程服务器实例,点击「Connect」即可。
- 之后VSCode会以root身份打开当前目录,所有图形化操作都拥有root权限,编辑文件、查看隐藏目录这些都没问题。
关于RemoteCommand/ProxyCommand被忽略的问题
你说Remote-SSH忽略这些配置,大概率是配置方式不对或者VSCode没读到正确的配置文件:
- 先确认你的SSH配置语法正确,比如ProxyCommand的写法(以跳板机为例):
Host jump-server HostName <跳板机IP> User <跳板机用户名> Host target-server HostName <目标服务器IP> User <目标服务器用户名> ProxyCommand ssh -W %h:%p jump-server - 在VSCode的设置里搜索「remote.SSH.configFile」,确认路径指向你编辑的那个SSH配置文件,有时候VSCode会默认读取系统级的配置文件,导致你的自定义配置没生效。
- 确保Remote-SSH扩展是最新版本,旧版本可能存在配置兼容性问题,在扩展市场里检查更新即可。
备注:内容来源于stack exchange,提问作者Richard Arnold Mead




