【保姆级】无外网 Linux 服务器用 VSCode 通义灵码:SSH 代理配置全流程

摘要

本文针对「Linux 服务器无外网权限,但需使用 VSCode 通义灵码插件」场景,提供从本地 Win11 配置到服务器验证的完整步骤,通过 SSH 代理转发让通义灵码借助本地外网正常工作,全程加密安全,步骤可直接复制执行,新手也能快速上手。

目录

  1. 【配置前准备】前置条件说明

  2. 【首次配置】从 0 到 1 打通代理(核心步骤)

  • 2.1 本地 Win11 安装 OpenSSH Server(管理员权限)

  • 2.2 本地 Win11 启动 SOCKS5 代理(普通 PowerShell)

  • 2.3 建立 SSH 远程转发隧道(绑定服务器端口)

  • 2.4 Linux 服务器验证代理连通性

  • 2.5 配置 VSCode 远程代理(通义灵码专属)

  • 2.6 验证通义灵码功能

  1. 【日常使用】Win11 重启后快速恢复步骤

  2. 【避坑指南】关键说明与常见问题修复

  3. 【优化建议】自动化脚本生成提议

1. 【配置前准备】前置条件说明

确保以下环境已满足,避免后续步骤卡顿:

  • 本地 Win11

    • 已连接外网(能正常访问网页)

    • 安装 VSCode 及「Remote-SSH」插件(VSCode 扩展市场直接搜索安装)

    • 已知 Linux 服务器的「用户名」「IP 地址」「登录密码 / 密钥」

  • Linux 服务器

    • 已开启 SSH 服务(默认 22 端口,能通过 VSCode Remote-SSH 连接)

    • 无外网权限(无法直接访问https://dashscope.aliyuncs.com

2. 【首次配置】从 0 到 1 打通代理(核心步骤)

2.1 本地 Win11 安装 OpenSSH Server(需管理员权限)

作用:为本地启动 SOCKS5 代理提供基础服务,仅需配置 1 次。

执行位置

本地 Win11 → 右键「开始菜单」→ 选择「Windows PowerShell (管理员)」

操作步骤
  1. 检查 OpenSSH Server 是否已安装

    执行命令:

    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'

  • 【验证标准】:若输出State : Installed,直接跳至步骤 4;若显示NotPresent,继续下一步。
  1. 安装 OpenSSH Server

    执行命令:

    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

  • 【验证标准】:输出RestartNeeded : False即安装成功。
  1. 启动 SSH 服务

    执行命令:

    Start-Service sshd

  • 【验证标准】:无报错输出(空白即正常)。
  1. 设置 SSH 服务开机自启

    执行命令:

    Set-Service -Name sshd -StartupType 'Automatic'

  • 【验证标准】:无报错输出。
  1. 确认 SSH 服务运行状态

    执行命令:

    Get-Service sshd

  • 【验证标准】:输出中Status字段显示Running(示例:Status : Running)。

2.2 本地 Win11 启动 SOCKS5 代理(普通 PowerShell)

作用:在本地 Win11 开启 1080 端口作为 SOCKS5 代理出口,后续隧道会绑定此端口。

执行位置

本地 Win11 → 打开「Windows PowerShell」(无需管理员权限,普通窗口即可)

操作步骤
  1. 启动本地 SOCKS5 代理(1080 端口)

    执行命令:

    ssh -D 1080 localhost -Nf

  • 【验证标准】:无报错输出(空白即正常启动)。
  1. 检查 1080 端口是否监听

    执行命令:

    netstat -ano | findstr "1080"

  • 【验证标准】:输出包含LISTENING(示例:TCP ``127.0.0.1:1080`` ``0.0.0.0``:0 LISTENING 12345)。

2.3 建立 SSH 远程转发隧道(绑定服务器端口)

作用:将 Linux 服务器的 1080 端口,通过 SSH 隧道转发到本地 Win11 的 1080 代理端口,让服务器流量走本地外网。

执行位置

本地 Win11 → 同一台普通 PowerShell 窗口(承接 2.2 步骤)

操作步骤

执行命令(需替换占位符):

复制代码
ssh -R 1080:127.0.0.1:1080 【服务器用户名】@【服务器IP地址】 -Nf -o TCPKeepAlive=yes -o ServerAliveInterval=30
  • 【占位符替换示例】:若服务器用户名为user1、IP 为192.168.1.100,则命令为ssh -R 1080:``127.0.0.1:1080`` user1@``192.168.1.100`` -Nf -o TCPKeepAlive=yes -o ServerAliveInterval=30

  • 【交互处理】:若提示「是否继续连接」,输入yes回车;若提示输入密码,输入服务器登录密码回车。

  • 【验证标准】:无报错输出(空白即隧道建立成功)。

2.4 Linux 服务器验证代理连通性

作用:确认服务器能通过代理访问外网,排除网络转发问题。

执行位置

VSCode → 已通过 Remote-SSH 连接到 Linux 服务器 → 打开远程终端(快捷键 `Ctrl +``, 反引号在键盘左上角)

操作步骤

执行命令:

复制代码
curl --proxy socks5h://localhost:1080 https://dashscope.aliyuncs.com
  • 【关键说明】:socks5h末尾的h表示「DNS 解析由代理(本地 Win11)处理」,必须加,否则会因服务器无外网导致 DNS 失败。

  • 【验证标准】:输出401 Unauthorized{"RequestId":"xxx","Code":"InvalidParameter"}(说明网络 + DNS 已通,仅缺 API 密钥,属正常现象)。

  • 【异常处理】:若提示Connection timed out,回到 2.2-2.3 步骤,重新执行代理和隧道命令。

2.5 配置 VSCode 远程代理(通义灵码专属)

作用:让 VSCode 及通义灵码插件使用服务器 1080 端口的代理,仅需配置 1 次。

执行位置

VSCode 界面(已连接 Linux 服务器)

操作步骤
  1. 打开远程设置 JSON
  • 按下Ctrl + ,(逗号)打开设置界面

  • 点击右上角「{}」图标(鼠标悬停显示「打开设置 (JSON)」)

  • 选择「Remote [SSH: 【服务器 IP 地址】] User Settings」(用户设置,全局生效,推荐新手选择)

  1. 粘贴代理配置并保存

    清空原有内容,粘贴以下配置(直接复制即可):

    {

    "http.proxy": "socks5://localhost:1080",

    "https.proxy": "socks5://localhost:1080",

    "http.proxyStrictSSL": false,

    "Lingma.HttpProxySettings": "manual",

    "Lingma.HttpProxyConfigurationURL": "socks5://localhost:1080",

    "Lingma.DisplayLanguage": "简体中文",

    "Lingma.PreferredLanguage for AI Chat": "简体中文",

    "Lingma.PreferredLanguage forCommitMessage": "简体中文"

    }

  • 按下Ctrl + S保存(配置自动生效,无需重启 VSCode)。
  1. 重启通义灵码服务
  • 点击 VSCode 左下角状态栏(任务栏)

  • 找到「通义灵码」图标(通常显示为「灵」字或插件 Logo)

  • 右键点击 → 选择「重启通义灵码服务」(让插件加载新代理配置)。

2.6 验证通义灵码功能

作用:最终确认通义灵码能正常使用,完成配置闭环。

执行位置

VSCode 界面(已连接 Linux 服务器)

操作步骤
  1. 打开 VSCode 左侧边栏 → 点击「通义灵码」插件图标(若未显示,在扩展市场搜索「通义灵码」安装)

  2. 在通义灵码交互输入框中,输入简单指令(示例:「写一个 Python 冒泡排序代码」)

  3. 【验证标准】:能正常返回代码片段或文字回答(无「网络错误」「连接超时」提示)。

  4. 【登录处理】:若提示「未登录阿里云账号」,点击登录按钮,用本地 Win11 的浏览器完成登录(登录状态会同步到 VSCode)。

3. 【日常使用】Win11 重启后快速恢复步骤

Win11 重启后,OpenSSH Server 会自动启动(无需重安装),但「SOCKS5 代理」和「SSH 隧道」会消失,仅需 3 步快速恢复:

步骤 1:重启本地 SOCKS5 代理

  • 执行位置:本地 Win11 → 普通 PowerShell

  • 命令:

    ssh -D 1080 localhost -Nf

  • 验证:无报错即成功。

步骤 2:重建 SSH 远程转发隧道

  • 执行位置:本地 Win11 → 同一 PowerShell

  • 命令(替换占位符):

    ssh -R 1080:127.0.0.1:1080 【服务器用户名】@【服务器IP地址】 -Nf -o TCPKeepAlive=yes -o ServerAliveInterval=30

  • 验证:无报错即成功。

步骤 3:可选快速验证(5 秒确认)

  • 执行位置:VSCode 远程终端

  • 命令:

    curl --proxy socks5h://localhost:1080 https://dashscope.aliyuncs.com

  • 验证:输出 401/404 即代理生效,直接打开通义灵码使用即可。

4. 【避坑指南】关键说明与常见问题修复

4.1 VSCode「用户设置」vs「工作区设置」区别

配置类型 生效范围 存储位置(Linux 服务器) 推荐场景
用户设置 所有远程项目 / 会话 ~/.vscode-server/data/Machine/settings.json 通用配置(如代理、语言)
工作区设置 仅当前打开项目 项目目录下.vscode/settings.json 特殊项目差异化配置
  • 【新手建议】:代理配置优先用「用户设置」,一次配置所有项目复用,无需重复操作。

4.2 常见问题修复(复制命令即可解决)

问题 1:执行ssh -D 1080 ``localhost`` -Nf报错「Connection refused」
  • 原因:本地 SSH 服务未启动

  • 解决:管理员 PowerShell 执行命令:

    Start-Service sshd

问题 2:curl 命令报错「Could not resolve host」
  • 原因:DNS 解析未走代理

  • 解决:确保 curl 命令用ssh -D 1080 ``localhost`` -Nf(末尾必须加h

问题 3:通义灵码提示「API 密钥错误」
  • 原因:仅网络通了,未登录阿里云账号

  • 解决:在通义灵码面板点击「登录」,用本地浏览器完成阿里云账号登录

问题 4:SSH 隧道频繁断开
  • 原因:无心跳保活,服务器主动关闭连接

  • 解决:隧道命令已包含-o TCPKeepAlive=yes -o ServerAliveInterval=30(30 秒发 1 次心跳),保持 PowerShell 窗口打开即可。

5. 【优化建议】自动化脚本生成提议

若觉得「Win11 重启后手动执行 2 步命令」繁琐,可生成批处理脚本(.bat),双击即可自动执行代理和隧道命令,无需每次复制粘贴。

需要的话,可留言获取脚本生成步骤,脚本会自动:

  1. 启动本地 SOCKS5 代理

  2. 建立 SSH 远程转发隧道

  3. 弹出验证提示(确认隧道是否成功)

结语

本文步骤已覆盖从配置到验证的全流程,核心是通过「SSH 远程转发」让无外网的服务器借助本地 Win11 外网,全程加密安全,且仅需首次配置 1 次,后续重启恢复仅需 2 步。若执行中遇到特殊报错,可在评论区留言,会及时回复解决~

本地重启后如何重连

bash 复制代码
taskkill /f /im ssh.exe *> $null
Get-NetTCPConnection -LocalPort 1080 -ErrorAction Stop | Select-Object OwningProcess | ForEach-Object { taskkill /f /pid $_.OwningProcess *> $null }  ##可选项目,可跳过
ssh -D 1080 localhost -Nf
Start-Process ssh -ArgumentList "-R 1080:127.0.0.1:1080 你的用户名@服务器IP -N -o TCPKeepAlive=yes -o ServerAliveInterval=30 -o ExitOnForwardFailure=yes -o LogLevel=DEBUG" -WindowStyle Hidden
相关推荐
Murphy_lx1 小时前
C++ 条件变量
linux·开发语言·c++
@CLoudbays_Martin111 小时前
钓鱼网站应该怎么判断?
服务器·网络·安全
EasyCVR2 小时前
视频汇聚平台EasyCVR服务器使用WiFi网卡时,为何无法向级联平台发送注册?
运维·服务器
赋创小助手2 小时前
英特尔确认取消 8 通道 Diamond Rapids:服务器 CPU 战局再度升级
服务器·图像处理·人工智能·深度学习·计算机视觉·自然语言处理·自动驾驶
LCG元2 小时前
Linux 信号(Signals)机制详解:如何优雅地关闭你的进程?
linux
梁正雄2 小时前
linux服务-Nginx+Tomcat+Redis之Session 共享
linux·nginx·tomcat
dyxal3 小时前
linux系统上 WPS Office新增字体
linux·运维·wps
Empty_7773 小时前
Ansible变量
服务器·github·ansible
❥ღ Komo·3 小时前
深入理解Ansible条件语句:从基础到高级应用
运维·服务器