You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复VSCode远程容器终端/usr/sbin/nologin启动失败(退出码1)错误

问题表现

Windows系统运行VSCode连接远程容器时,启动容器内集成终端返回报错:

终端进程"/usr/sbin/nologin"启动失败(退出代码: 1)。

手动执行docker exec命令可正常进入容器启动bash终端,仅VSCode集成终端无法正常拉起。

故障根因

VSCode连接远程容器时,默认使用容器内配置的对应用户的登录shell启动终端,当该用户的默认shell被设置为/usr/sbin/nologin(非交互式shell,本身禁止登录操作)时,就会触发启动失败。手动执行docker exec时默认使用root用户或显式指定了bash shell,因此不会触发该问题。

解决方法

二选一即可:

方法1:修改VSCode容器远程侧终端配置(无需改动容器内部配置)

  • 保持VSCode与远程容器的连接状态,按下Ctrl+Shift+P调出命令面板,搜索并选择首选项: 打开远程设置(容器),注意不要选成本机Windows的用户设置/工作区设置
  • 在设置页搜索terminal.integrated.defaultProfile.linux,将默认值修改为bash(容器内安装了zsh/fish等其他shell也可对应选择)
  • 如果图形化设置不生效,可直接点击设置页右上角的打开settings.json按钮,添加如下配置:
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.profiles.linux": {
  "bash": {
    "path": "/bin/bash",
    "args": ["-l"]
  }
}
  • 按下Ctrl+Shift+P搜索Developer: Reload Window重载窗口,重新打开终端即可正常使用。

方法2:修改容器内用户的默认登录shell(一劳永逸,后续重连容器无需重复改VSCode配置)

  • 本地终端执行docker exec -it <你的容器ID或容器名> bash进入容器
  • 执行cat /etc/passwd | grep vscode查看VSCode连接容器默认使用的vscode用户配置,输出内容末尾如果是/usr/sbin/nologin即可确认是该问题
  • 执行如下命令修改vscode用户的默认shell为bash:
# 容器内置chsh命令时用这个
chsh -s /bin/bash vscode
# 若容器内没有chsh命令,换用这个
usermod -s /bin/bash vscode
  • 断开VSCode与容器的连接后重新连接,打开集成终端即可正常启动。

内容的提问来源于stack exchange,提问作者KZiovas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:58:01