vs code连接远程服务器docker环境及配置免密登录

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容器

步骤

  1. VS Code左下角绿色><图标 → Connect to Host...,输入服务器ssh地址:user@服务器IP,完成ssh登录远程服务器,打开新远程窗口。

建议配置ssh密钥免密登录,避免反复输密码。

  1. 在已经SSH连上服务器的这个VS Code窗口:

    Ctrl+Shift+P(F1),输入:

    Dev Containers: Attach to Running Container...

  2. 下拉列表会列出服务器上所有正在运行的docker容器,选择你要进入的容器。

  3. VS Code会自动在容器内部安装vscode服务端,新开窗口,直接操作容器内部文件、终端、调试。

✅优点:本地不需要安装Docker ;GPU环境也可以正常使用;直接访问容器内部环境。

⚠️注意:代码文件要放在远程服务器磁盘,不能把本地电脑文件直接挂载进远程docker容器(docker不支持跨机器bind mount)。


免密登录

现状

服务器已有 ~/.ssh/authorized_keys,里面已经有其他人的 id_ed25519 公钥,不能删除原有内容,只追加你自己的公钥,一行一个密钥

你的环境:Windows本地,远程Linux服务器,VSCode Remote‑SSH + Dev Containers

步骤1:本地Windows生成密钥对(PowerShell)

  1. 打开 PowerShell
powershell 复制代码
ssh-keygen -t ed25519

全部直接回车:

  • 回车(保存位置默认)
  • 回车(密钥密码:留空,不要输入任何字符,实现免密
  • 回车(确认密码)

生成文件位置:

C:\Users\你的Windows用户名\.ssh\

  • id_ed25519 👉私钥(留在本机,绝不传到服务器)
  • id_ed25519.pub 👉公钥,需要复制到服务器
  1. 打印出你的公钥,完整复制全部输出(一整行,不要换行)
powershell 复制代码
cat ~/.ssh/id_ed25519.pub

复制全部,开头是 ssh-ed25519

步骤2:SSH密码登录服务器(最后一次输密码)

PowerShell执行:

powershell 复制代码
ssh 服务器用户名@服务器IP

输入服务器密码,登录进入服务器。

步骤3:追加你的公钥到已存在的authorized_keys

  1. 编辑文件
bash 复制代码
nano ~/.ssh/authorized_keys
  • 使用键盘方向键,移动光标到文件最末尾,新建一行
  • 把刚才复制好的你的公钥粘贴到这新一行

✅原有其他人的密钥全部保留不动;每个人公钥占独立一行。

✅确保你的公钥是完整一整行,不要中间换行。

  1. 保存退出nano:

    Ctrl+O → 按回车确认保存 → Ctrl+X退出编辑器。

  2. 设置权限(必须执行,就算文件本来就存在

bash 复制代码
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  1. 退出服务器
bash 复制代码
exit

步骤4:PowerShell测试免密登录(关键校验)

回到Windows PowerShell:

powershell 复制代码
ssh 服务器用户名@服务器IP

✅直接登录、不需要输入密码 ,才算成功。

❌如果还要密码:不能往下走,回头检查粘贴是否多换行、权限命令是否执行。

步骤5:VS Code配置ssh config

  1. 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容器

  1. VSCode点左下角绿色><Connect to Host...,选择 my‑server
    新开窗口,左下角显示 SSH: my‑server,代表连上远程服务器。

该窗口打开的文件都在服务器,不是本地电脑。

  1. 在这个SSH远程窗口,Ctrl+Shift+P
    执行:Dev Containers: Attach to Running Container...
  2. 在列表选中你要的docker容器。
  3. VSCode再次新开窗口,左下角 Dev Container: xxx,成功进入容器内部。

补充:如果attach看不到容器

在SSH服务器终端执行:

bash 复制代码
sudo usermod -aG docker $USER

断开ssh,重新连接服务器即可生效。

简单排错

  1. PowerShell能免密登录,但VSCode仍要密码:检查config中IdentityFile路径是否正确,用的是私钥不是公钥。
  2. 粘贴公钥后无法免密:打开authorized_keys确认你的密钥是单独完整一行,没有被换行拆分。
  3. 其他人不受影响:原有密钥保留
相关推荐
徐小黑ACG2 小时前
nginx配置文件
linux·服务器·nginx
新时代牛马2 小时前
Linux VFS 完整篇:从path_openat、dentry/inode 到page cache 与挂载排障
linux·运维·服务器
java_logo3 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·docker·容器·rocky linux·基础镜像·轩辕镜像·rhel 兼容
cloudfantasy4 小时前
docker直接二进制安装,非编译。KylinV10SP3 aarch64有效
运维·docker
新时代牛马4 小时前
Linux 驱动中断与定时完整篇:从 request_threaded_irq 到hrtimer 选型与排障
linux·运维·服务器
M--Y7 小时前
Docker数据持久化与网络架构
网络·docker·架构
这个DBA有点耶7 小时前
同样48核配置TPS差1倍?高性价比数据库一体机的“软硬协同”才是分水岭
服务器·数据库·架构
yanwumuxi10 小时前
Docker记录:误删宿主机挂载目录导致 PostgreSQL 数据丢失
docker·postgresql·容器
码农小韩10 小时前
Linux应用开发(一)——Linux的标准IO
linux·运维·服务器