如何在VSCode(Remote-SSH环境)中以root权限运行调试程序
永久配置Remote-SSH以超级用户身份运行/调试C/C++程序
下面是几种可行的永久配置方案,按需选择:
方案1:直接以root身份通过SSH连接
如果目标设备允许root远程登录,这是最直接的方式:
- 登录目标设备,编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config - 找到
PermitRootLogin选项,将其值改为yes(如果是prohibit-password则保持,只要允许root用密钥登录也可以) - 保存文件后重启SSH服务:
sudo systemctl restart sshd - 在VS Code的Remote-SSH配置里,直接使用
root作为用户名连接目标设备
方案2:给当前用户配置免密sudo,配合VS Code调试配置
不想直接用root登录的话,可以给日常用户开免密sudo权限,然后让调试工具自动使用sudo:
步骤1:配置免密sudo
- 登录目标设备,执行
sudo visudo打开sudoers配置文件 - 在文件末尾添加一行(把
your_user换成你的日常用户名):your_user ALL=(ALL) NOPASSWD: ALL - 按
Ctrl+O保存,Ctrl+X退出
步骤2:配置VS Code调试launch.json
打开项目的.vscode/launch.json,修改调试配置:
- 对于C/C++调试,将
miDebuggerPath改为sudo gdb(如果用lldb则是sudo lldb) - 示例配置:
{ "version": "0.2.0", "configurations": [ { "name": "C/C++: 可执行文件调试", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "sudo gdb" } ] }
这样启动调试时会自动以sudo权限运行gdb,无需手动输入密码。
方案3:配置Remote-SSH自动切换到root
通过SSH连接时自动执行sudo su -切换到root,无需手动操作:
- 打开VS Code的Remote-SSH配置文件(点击左下角远程图标→Remote-SSH: Open Configuration File...)
- 给目标设备的连接配置添加
RemoteCommand和RequestTTY:Host target-device HostName 192.168.x.x User your_user RemoteCommand sudo su - RequestTTY yes - 保存配置后,重新连接目标设备,会直接进入root用户的shell环境,后续运行、调试程序都会默认以root权限执行
内容的提问来源于stack exchange,提问作者AlexOkun
相关产品推荐
相关产品推荐

