vs code远端开发环境

烂柯 发布于 8 小时前 1 次阅读


一、概述

​ 客户端均为windows系统,基于vs code进行远程环境的开发工作,本文记录ssh连接 linux开发环境和连接容器开发环境。容器开发环境是基于已经运行的远端容器进行的,不在客户端不安装wsl且不运行docker引擎。

  • Remote-SSH:通过 SSH 协议连接远程服务器(物理机、云主机等),直接使用远程主机的系统环境进行开发。

    适用于:已有稳定的远程服务器、需直接操作主机资源(如本地硬件受限)、项目依赖少且无需频繁切换环境。

  • DevContainer:将开发环境(依赖、工具、配置)打包成 Docker 容器,可在本地或远程服务器上运行,开发过程完全在容器内进行。

    适用于:团队协作开发、多项目环境隔离、需要统一开发标准、依赖复杂易冲突的项目。

二、依赖

1、git(可选)

安装git

2、扩展包

VS Code 安装 Remote Development 扩展包插件

3、ssh免密

#客户端生成密钥对(windows可在Git Bash 中执行)
ssh-keygen -t ed25519 
#将本地公钥复制到远程服务器或者将本地 SSH 公钥文件追加至git ~/.ssh/authorized_keys
ssh-copy-id -i "C:\Users\Administrator/.ssh/id_ed25519.pub" <远程用户>@<远程服务器IP>
# -i 指定公钥文件
# -p 自定服务器ssh端口

#验证免密连接
ssh <远程用户>@<远程服务器IP>

三、Linux开发环境

通过Remote - SSH 插件,f1执行remote-ssh命令配置连接或者vs code左下角配置remote ssh,连接远端docker的服务器

四、容器开发环境

1、服务端

服务端需要安装docker,确保可以正常运行容器

2、客户端

客户端需要安装docker cli(无需要docker引擎运行容器),通过choco安装docker cli

注意:安装完docker cli后推荐git bash 执行命令 (powershell、cmd执行响应很慢)

#安装choco
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

#缓存位置
#choco config set cacheLocation "D:\custom\download\path"
#包默认安装位置
#choco config set installLocation "D:\custom\install\path"

#注销或重启后使环境变量生效
choco install docker-cli -y
#安装位置 C:\ProgramData\chocolatey\lib

3、代理默认ssh

​ 由于windows默认使用的ssh很慢不利于频繁交互场景,所以通过编写脚本代理ssh命令,划分执行git ssh和window open ssh。编写代理脚本命名为ssh,将该脚本目录设置为环境变量且位置先与windows OpenSSH环境变量,设置环境变量后需要注销或重启后使环境变量生效。

@echo off
set "GIT_SSH=E:\Program Files\Git\usr\bin\ssh.exe"
set "WINDOWS_SSH=C:\Windows\System32\OpenSSH\ssh.exe"
rem 该Host用Git SSH,多个使用空格分割
set "TARGET_HOSTS=192.168.157.118 192.168.157.110"

set "params=%*"
::启用延迟扩展
setlocal enabledelayedexpansion
::遍历参数
for %%i in (%*) do (
    set TARGET=%%i
    echo %TARGET% | findstr /c:"@" >nul
    if not errorlevel 1 (
        for /f "delims=@ tokens=2" %%a in ("!TARGET!") do (
            set TARGET=%%a
        )
    )   
    for /f "tokens=2 delims=@" %%b in ("%ARG1%") do (
        set "TARGET=%%b"
    )

    for %%h in (%TARGET_HOSTS%) do (
        echo !TARGET! | findstr /i "%%h" >nul && (
            goto git_ssh
        )
    )    
)
::关闭延迟扩展
endlocal  
::默认执行
goto windows_ssh

:git_ssh
"%GIT_SSH%" %params%
goto :end

:windows_ssh
"%WINDOWS_SSH%" %params%
goto :end

:end
exit /b

4、配置docker cli

这里docker host可以通过ssh和tcp(tcp://远端引擎IP:2376,远端 Docker 引擎需开启远程访问),以下基于ssh进行通信

#创建设置docker cli上下文(设置ssh免密连接)
docker context create remote-docker --docker "host=ssh://root@192.168.1.100"
docker context use remote-docker
#可以执行docker命令验证
#F1输入:dev containers:attach to running container

5、vs code命令

按F1,输入命令进行选择执行

#远端容器环境
#连接远端,后打开项目
Remote-SSH:connect to Host
#在容器中重新打开项目
Dev Containers: Reopen in Container
烂柯

最后更新于 2025-11-18