Windows下通过vscode连接 Linux服务器

文章目录

  • 1、部署
    • [🛠️ 第一步:安装 Remote - SSH 扩展](#🛠️ 第一步:安装 Remote - SSH 扩展)
    • [⚙️ 第二步:配置 SSH 主机信息](#⚙️ 第二步:配置 SSH 主机信息)
    • [🔌 第三步:发起远程连接](#🔌 第三步:发起远程连接)
    • [💡 进阶技巧:配置免密登录(可选)](#💡 进阶技巧:配置免密登录(可选))
      • [💡 最推荐的操作方法](#💡 最推荐的操作方法)
      • [🔧 如果只能手动粘贴](#🔧 如果只能手动粘贴)
      • [⚠️ 至关重要的一步:修改权限](#⚠️ 至关重要的一步:修改权限)
  • 2、问题处理
  • 3、最优配置
    • [⚙️ 生效规则](#⚙️ 生效规则)
    • [💡 优化后的配置示例](#💡 优化后的配置示例)
  • 4、如何选择venv调试python程序

1、部署

在 Windows 上通过 VS Code 连接 Linux 服务器,最推荐的方式是使用微软官方提供的 Remote - SSH 扩展。以下是详细的操作步骤:

🛠️ 第一步:安装 Remote - SSH 扩展

  1. 打开 VS Code,点击左侧活动栏的"扩展"图标(四个方块)。
  2. 在搜索框中输入 Remote - SSH
  3. 找到由 Microsoft 发布的扩展并点击"安装"。

⚙️ 第二步:配置 SSH 主机信息

为了让连接更稳定且方便管理,建议通过配置文件来添加服务器信息:

  1. 按下快捷键 Ctrl + Shift + P 打开命令面板。
  2. 输入并选择 Remote-SSH: Open Configuration File...
  3. 选择默认的用户配置文件(通常是 C:\Users\你的用户名\.ssh\config)。
  4. 在文件中按照以下格式添加你的 Linux 服务器信息:
text 复制代码
Host myserver              # 自定义一个服务器别名
    HostName 192.168.1.100 # 替换为你的服务器真实IP地址或域名
    User your_username     # 替换为你的Linux登录用户名
    Port 22                # SSH端口,默认为22,如果修改过请填写实际端口

保存文件后,VS Code 就能识别这台服务器了。

🔌 第三步:发起远程连接

  1. 再次按下 Ctrl + Shift + P 打开命令面板。
  2. 输入并选择 Remote-SSH: Connect to Host...
  3. 在下拉列表中选择你刚刚配置的别名(例如 myserver)。
  4. 首次连接时,VS Code 会弹出窗口让你选择远程服务器的平台类型,请选择 Linux
  5. 如果是第一次连接,系统可能会提示你确认指纹,点击"继续"即可。随后根据提示输入该用户的登录密码。

连接成功后,VS Code 左下角的绿色区域会显示 SSH: myserver,此时你打开终端或编辑文件,操作的都是远程 Linux 服务器上的环境。

💡 进阶技巧:配置免密登录(可选)

如果你觉得每次输入密码很麻烦,可以配置 SSH 密钥实现免密登录:

  1. 本地生成密钥 :在 Windows 的 CMD 或 PowerShell 中输入 ssh-keygen,一路回车即可生成公钥和私钥(通常在 C:\Users\你的用户名\.ssh\ 目录下)。

  2. 上传公钥到服务器 :将本地的公钥文件(如 id_rsa.pub)内容,追加写入到 Linux 服务器的 ~/.ssh/authorized_keys 文件中。

  3. 更新本地配置 :在你的 .ssh\config 文件中,增加一行私钥路径指向:

    text 复制代码
    IdentityFile C:/Users/你的用户名/.ssh/id_rsa

💡 最推荐的操作方法

如果你的 Windows 终端(如 PowerShell、CMD 或 Git Bash)支持 ssh-copy-id 命令,强烈建议直接使用以下命令,它能自动帮你完成复制和配置的全过程,非常省心:

bash 复制代码
ssh-copy-id 你的用户名@你的服务器IP地址

运行该命令后,输入一次服务器的登录密码,它就会自动把你的公钥添加到远程服务器的 authorized_keys 文件中。

🔧 如果只能手动粘贴

如果你需要手动操作,可以在服务器上执行以下命令来安全地添加公钥:

bash 复制代码
# 1. 确保服务器上的 .ssh 目录存在
mkdir -p ~/.ssh

# 2. 将你复制的本地公钥内容粘贴并追加到 authorized_keys 文件中
echo "这里粘贴你复制的完整的公钥内容" >> ~/.ssh/authorized_keys

⚠️ 至关重要的一步:修改权限

SSH 对文件和目录的权限要求极其严格。无论使用哪种方法,配置完成后,必须在 Linux 服务器上执行以下两条命令来修改权限,否则免密登录很可能会失败:

bash 复制代码
chmod 700 ~/.ssh                 # 设置 .ssh 目录权限为 700
chmod 600 ~/.ssh/authorized_keys # 设置 authorized_keys 文件权限为 600

完成以上步骤后,你就可以在 VS Code 中实现无密码直接连接服务器了!

2、问题处理

Host可以用中文吗

强烈不建议在 Host 别名中使用中文。

虽然理论上部分新版 SSH 客户端可能支持,但在实际开发中(尤其是配合 VS Code 的 Remote-SSH 扩展时),使用中文作为 Host 别名会带来极大的隐患:

  1. 解析失败风险高 :VS Code 的 Remote-SSH 扩展以及底层的 OpenSSH 对配置文件的编码非常敏感。如果 config 文件中包含中文,很容易出现"找不到 Host"、"解析失败"或者连接时报错 Could not resolve hostname 的情况。
  2. 路径与空格问题 :如果你的 Windows 用户名本身就是中文(例如 C:\Users\张三\.ssh\config),这本身就容易导致 SSH 读取配置文件时发生权限或路径识别错误。如果在文件内部再使用中文别名,会进一步增加出错的概率。
  3. 跨平台兼容性差:纯英文的别名在任何操作系统(Windows, Mac, Linux)和任何终端工具下都能完美兼容,而中文则容易因为系统区域设置或编码格式(如 UTF-8 与 GBK)的不同引发各种莫名其妙的 Bug。

为了连接的绝对稳定,建议你养成以下习惯:

  • Host 别名只用英文、数字和短横线 :比如用 aliyun-servertest-vm-01 等清晰明了的英文组合。
  • 严禁在关键行使用中文注释 :不仅 Host 别名不要用中文,HostNameUser 等关键配置行的旁边也尽量不要写中文注释。某些旧版本的 OpenSSH 会因为解析到非标准字符而导致整段配置失效。

如果你已经写了中文别名并遇到了连接问题,最快的解决办法就是把它改成纯英文,保存后重新尝试连接即可。

3、最优配置

IdentityFile 放在最外层,是管理多台服务器时非常推荐的"最佳实践"。

在 SSH 的配置文件(config)中,写在最外层、使用通配符 Host * 的配置块被称为全局默认配置。它的作用是为所有服务器提供一套通用的默认参数。

⚙️ 生效规则

SSH 读取配置文件时遵循两个核心原则:

  1. 从上到下匹配:它会按顺序读取文件,如果多个地方都配置了同一个参数,后面的会覆盖前面的。
  2. 具体优先于全局 :你在某个具体的 Host 下面写的配置,优先级永远高于全局的 Host *

因此,你可以将最常用的私钥路径写在全局里,只有当某台特殊的服务器需要使用不同的密钥时,再在它自己的 Host 下单独指定即可。

💡 优化后的配置示例

假设你有三台服务器,其中两台用默认的密钥,一台特殊的用独立密钥,你的 config 文件可以这样优雅地写:

text 复制代码
# --- 全局默认配置(适用于所有 Host)---
Host *
    User your_username                    # 如果你的登录用户名都一样,也可以放这里
    IdentityFile C:/Users/你的用户名/.ssh/id_rsa  # 👈 设置一个最常用的默认私钥
    Port 22                               # 默认端口也可以放这里

# --- 常规服务器 A(直接继承上面的全局配置)---
Host myserver-a
    HostName 192.168.1.100

# --- 常规服务器 B(同样继承全局配置)---
Host myserver-b
    HostName 192.168.1.101

# --- 特殊服务器 C(需要用自己的专属私钥)---
Host myserver-c
    HostName 192.168.1.102
    IdentityFile C:/Users/你的用户名/.ssh/id_rsa_special  # 👈 单独指定,会覆盖掉全局的默认值

通过这种方式,你不仅不需要在每个服务下面重复添加相同的 IdentityFile,还能让配置文件变得极其整洁,后续维护起来也方便得多。

4、如何选择venv调试python程序

连接上 Linux 服务器后,VS Code 的界面虽然看起来和 Windows 本地一样,但所有的路径和操作都必须基于 Linux 环境

要使用 Linux 上的 venv 虚拟环境,请按照以下步骤操作:

第一步:确认 venv 在 Linux 上的路径

你需要知道你的虚拟环境文件夹在 Linux 服务器上的具体位置。通常它位于项目根目录下,名为 .venvvenv

假设你的项目代码在 /home/apnts/SatelliteMonitor,那么 Python 解释器的完整路径通常是:

/home/apnts/SatelliteMonitor/.venv/bin/python

注意 :Linux 下 Python 可执行文件通常在 bin 目录下,而不是 Windows 下的 Scripts 目录。

第二步:在 VS Code 中选择解释器

  1. 打开命令面板 :按下快捷键 Ctrl + Shift + P(Mac 上是 Cmd + Shift + P)。
  2. 输入命令 :输入并选择 Python: Select Interpreter(Python: 选择解释器)。
  3. 查找环境
    • VS Code 会自动扫描常见的虚拟环境路径。如果列表里出现了类似 ./.venv (Python 3.x.x) 的选项,直接点击它即可。
    • 如果列表里没有 :点击列表顶部的 Enter interpreter path... (输入解释器路径)
  4. 输入路径 :在弹出的输入框中,粘贴你在第一步中确认的完整路径(例如 /home/apnts/.../bin/python),然后回车确认。

第三步:验证是否生效

选择完成后,请看 VS Code 窗口的右下角状态栏

  • 你应该能看到显示的 Python 版本旁边带有 ('.venv': venv) 字样。
  • 或者显示的路径指向的是你 Linux 服务器上的那个路径,而不是 Windows 的 C:\Users\...

进阶技巧:使用终端快速创建/激活

如果你还没创建 venv,或者想确认路径,可以直接使用截图下方已经打开的终端(Terminal):

  1. 进入项目目录

    bash 复制代码
    cd ~/SatelliteMonitor  # 或者是你实际的项目路径
  2. 创建虚拟环境 (如果还没有):

    bash 复制代码
    python3 -m venv .venv
  3. 激活环境 (这一步不是必须的,但可以用来测试):

    bash 复制代码
    source .venv/bin/activate
  4. 查看当前 Python 路径

    bash 复制代码
    which python

    把这个命令输出的路径复制到 VS Code 的解释器选择框里,是最稳妥的方法。

设置配置文件

F5 的行为是由 .vscode/launch.json 文件控制的。如果这个文件没配好,VS Code 就不知道该怎么跑你的代码。

  • 检查方法 :点击左侧侧边栏的"运行和调试"图标(像一个小虫子带个三角形),然后点击蓝色的链接 "创建 launch.json 文件"
  • 选择类型 :在弹出的列表中选择 Python Debugger
  • 选择配置 :选择 Python File (当前文件)

此时,你的项目目录下会生成一个 .vscode/launch.json 文件,内容应该类似这样:

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",  // 👈 关键:这代表运行你当前打开的那个文件
            "console": "integratedTerminal" // 👈 推荐:使用集成终端,方便看输出和输入
        }
    ]
}

完成以上步骤后,当你按 F5 调试或在终端运行 Python 脚本时,VS Code 就会自动调用这个 Linux 虚拟环境中的 Python 了。

相关推荐
青山如墨雨如画2 小时前
【Claude】Win11系统VSCode环境中Claude+Deepseek报错的全自动解决方式
vscode·aigc·claude·authropic
GDAL2 小时前
在 Windows 上做 Go 跨平台编
windows·golang
whyfail2 小时前
Codex 下载安装指南:Windows 和 macOS 官方版下载
windows·macos·codex
感谢地心引力2 小时前
在Claude Code里面使用Deepseek-v4,支持mac和Windows双系统
人工智能·windows·macos·ai·deepseek·claude code
c238562 小时前
list(下)
数据结构·windows·list
特立独行的猫a2 小时前
eProsima Fast DDS & Fast DDS Spy & Shapes Demo Windows x64 从源码编译安装完全教程
windows·dds·fastdds·fastddsspy·shapesdemo
ITHAOGE152 小时前
下载| Windows 11 ARM版5月官方ISO系统映像 (适合部分笔记本、苹果M系列芯片电脑、树莓派和部分安卓手机平板)
windows·科技·微软·电脑
感谢地心引力3 小时前
在codex里面使用Deepseek-v4,支持mac和windows双系统
windows·gpt·macos·ai·codex·deepseek
不总是12 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js