如何配置VS Code使用SSH密钥登录远程服务器直接进入appuser
配置方案
核心要解决两个卡点:一是打通“SSH登录user后自动切换到appuser”的无交互链路,二是避开无读写权限的/home/user目录,让VS Code远程服务能正常落地运行。
第一步:本地SSH客户端配置
编辑本地的SSH配置文件:
- Windows路径:
C:\Users\你的系统用户名\.ssh\config - macOS/Linux路径:
~/.ssh/config
在文件中新增对应服务器的配置,完整示例参考:
Host 公司业务服务器 HostName 你的服务器实际IP/域名 User user # 串联自动切换用户的执行逻辑,实现无交互连接 ProxyCommand ssh -W %h:%p user@hostname -t "sudo -u appuser /bin/bash" # 强制指定VS Code远程服务的落地路径,避开无权限的/home/user目录 RemoteUploadDirectory /home/appuser/.vscode-server # 强制指定登录后的家目录为appuser的合法家目录 RemoteCommand sudo -u appuser HOME=/home/appuser /bin/bash -l
注意:如果你的终端里执行
sudo su - appuser需要手动输入密码,需要提前在服务器上配置user用户的免密sudo规则,不然VS Code的非交互连接会卡在密码输入环节无法继续。规则示例(以root身份执行):echo "user ALL=(appuser) NOPASSWD: /bin/bash" >> /etc/sudoers.d/appuser_sudo
第二步:公钥配置说明
不需要以appuser身份生成新的密钥对,也不需要给appuser单独开放服务器SSH端口登录权限,只要现有链路能通过user身份sudo切换到appuser,就能满足连接要求:
- 直接把本地已有的SSH公钥(对应文件一般是
~/.ssh/id_ed25519.pub或~/.ssh/id_rsa.pub的全部内容),通过现有终端链路追加到appuser家目录的/home/appuser/.ssh/authorized_keys文件末尾即可 - 追加完成后确认两个权限合规,否则SSH认证会直接失败:
/home/appuser/.ssh目录权限为700,属主为appuser/home/appuser/.ssh/authorized_keys文件权限为600,属主为appuser
第三步:VS Code插件侧调整
- 确认已安装官方
Remote - SSH插件 - 打开VS Code设置,搜索
Remote.SSH: Remote Server Upload Directory,将值填写为/home/appuser/.vscode-server - 直接在远程连接列表中选择刚才配置的主机名即可完成连接,全程不需要手动执行su切换用户的操作
常见问题排查
- 连接失败时先在终端输入配置好的SSH别名连接,确认登录后自动切换到appuser身份、当前家目录为
/home/appuser、能在该目录下正常创建文件,再尝试VS Code连接 - 不要将VS Code服务落地目录设置为
/tmp,服务器定期清理临时文件会导致每次连接都要重新部署服务端,连接效率极低 - 如果连接后报“权限拒绝”错误,优先检查是否存在自动切换用户的步骤需要交互输入密码的情况
内容的提问来源于stack exchange,提问作者Johnson4996
相关产品推荐
相关产品推荐

