VS Code连接远程服务器上的Docker容器
先SSH连服务器,再Attach容器,最常用、最稳定,不需要本地装Docker**。
环境说明:远程Linux服务器上已经运行docker、容器已经启动;本地Windows/macOS。
方案1:Remote‑SSH + Dev Containers(⭐推荐)
本地VS Code安装插件
- Remote‑SSH:连接远程Linux服务器
- Dev Containers(旧名Remote‑Containers):接入docker容器
步骤
- VS Code左下角绿色
><图标 →Connect to Host...,输入服务器ssh地址:user@服务器IP,完成ssh登录远程服务器,打开新远程窗口。
建议配置ssh密钥免密登录,避免反复输密码。
-
在已经SSH连上服务器的这个VS Code窗口:
按
Ctrl+Shift+P(F1),输入:Dev Containers: Attach to Running Container... -
下拉列表会列出服务器上所有正在运行的docker容器,选择你要进入的容器。
-
VS Code会自动在容器内部安装vscode服务端,新开窗口,直接操作容器内部文件、终端、调试。
✅优点:本地不需要安装Docker ;GPU环境也可以正常使用;直接访问容器内部环境。
⚠️注意:代码文件要放在远程服务器磁盘,不能把本地电脑文件直接挂载进远程docker容器(docker不支持跨机器bind mount)。
免密登录
现状
服务器已有 ~/.ssh/authorized_keys,里面已经有其他人的 id_ed25519 公钥,不能删除原有内容,只追加你自己的公钥,一行一个密钥。
你的环境:Windows本地,远程Linux服务器,VSCode Remote‑SSH + Dev Containers
步骤1:本地Windows生成密钥对(PowerShell)
- 打开 PowerShell
powershell
ssh-keygen -t ed25519
全部直接回车:
- 回车(保存位置默认)
- 回车(密钥密码:留空,不要输入任何字符,实现免密)
- 回车(确认密码)
生成文件位置:
C:\Users\你的Windows用户名\.ssh\
id_ed25519👉私钥(留在本机,绝不传到服务器)id_ed25519.pub👉公钥,需要复制到服务器
- 打印出你的公钥,完整复制全部输出(一整行,不要换行)
powershell
cat ~/.ssh/id_ed25519.pub
复制全部,开头是
ssh-ed25519。
步骤2:SSH密码登录服务器(最后一次输密码)
PowerShell执行:
powershell
ssh 服务器用户名@服务器IP
输入服务器密码,登录进入服务器。
步骤3:追加你的公钥到已存在的authorized_keys
- 编辑文件
bash
nano ~/.ssh/authorized_keys
- 使用键盘方向键,移动光标到文件最末尾,新建一行
- 把刚才复制好的你的公钥粘贴到这新一行
✅原有其他人的密钥全部保留不动;每个人公钥占独立一行。
✅确保你的公钥是完整一整行,不要中间换行。
-
保存退出nano:
Ctrl+O→ 按回车确认保存 →Ctrl+X退出编辑器。 -
设置权限(必须执行,就算文件本来就存在)
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
- 退出服务器
bash
exit
步骤4:PowerShell测试免密登录(关键校验)
回到Windows PowerShell:
powershell
ssh 服务器用户名@服务器IP
✅直接登录、不需要输入密码 ,才算成功。
❌如果还要密码:不能往下走,回头检查粘贴是否多换行、权限命令是否执行。
步骤5:VS Code配置ssh config
- VSCode按
Ctrl+Shift+P
输入:Remote‑SSH: Open SSH Configuration File,回车
选择:C:\Users\你的Windows用户名\.ssh\config
粘贴下面模板,修改三处:
ssh-config
Host my-server
HostName 这里填你的服务器IP
User 这里填服务器登录用户名
IdentityFile C:\Users\你的Windows用户名\.ssh\id_ed25519
IdentityFile 写私钥id_ed25519,不要写.pub公钥。保存文件。
步骤6:VSCode连接服务器,接入Docker容器
- VSCode点左下角绿色
><→Connect to Host...,选择my‑server
新开窗口,左下角显示SSH: my‑server,代表连上远程服务器。
该窗口打开的文件都在服务器,不是本地电脑。
- 在这个SSH远程窗口,
Ctrl+Shift+P
执行:Dev Containers: Attach to Running Container... - 在列表选中你要的docker容器。
- VSCode再次新开窗口,左下角
Dev Container: xxx,成功进入容器内部。
补充:如果attach看不到容器
在SSH服务器终端执行:
bash
sudo usermod -aG docker $USER
断开ssh,重新连接服务器即可生效。
简单排错
- PowerShell能免密登录,但VSCode仍要密码:检查config中
IdentityFile路径是否正确,用的是私钥不是公钥。 - 粘贴公钥后无法免密:打开authorized_keys确认你的密钥是单独完整一行,没有被换行拆分。
- 其他人不受影响:原有密钥保留