文章目录
- 1、部署
-
- [🛠️ 第一步:安装 Remote - SSH 扩展](#🛠️ 第一步:安装 Remote - SSH 扩展)
- [⚙️ 第二步:配置 SSH 主机信息](#⚙️ 第二步:配置 SSH 主机信息)
- [🔌 第三步:发起远程连接](#🔌 第三步:发起远程连接)
- [💡 进阶技巧:配置免密登录(可选)](#💡 进阶技巧:配置免密登录(可选))
-
- [💡 最推荐的操作方法](#💡 最推荐的操作方法)
- [🔧 如果只能手动粘贴](#🔧 如果只能手动粘贴)
- [⚠️ 至关重要的一步:修改权限](#⚠️ 至关重要的一步:修改权限)
- 2、问题处理
- 3、最优配置
-
- [⚙️ 生效规则](#⚙️ 生效规则)
- [💡 优化后的配置示例](#💡 优化后的配置示例)
- 4、如何选择venv调试python程序
-
- [第一步:确认 venv 在 Linux 上的路径](#第一步:确认 venv 在 Linux 上的路径)
- [第二步:在 VS Code 中选择解释器](#第二步:在 VS Code 中选择解释器)
- 第三步:验证是否生效
- 进阶技巧:使用终端快速创建/激活
- 设置配置文件
1、部署
在 Windows 上通过 VS Code 连接 Linux 服务器,最推荐的方式是使用微软官方提供的 Remote - SSH 扩展。以下是详细的操作步骤:
🛠️ 第一步:安装 Remote - SSH 扩展
- 打开 VS Code,点击左侧活动栏的"扩展"图标(四个方块)。
- 在搜索框中输入
Remote - SSH。 - 找到由 Microsoft 发布的扩展并点击"安装"。
⚙️ 第二步:配置 SSH 主机信息
为了让连接更稳定且方便管理,建议通过配置文件来添加服务器信息:
- 按下快捷键
Ctrl + Shift + P打开命令面板。 - 输入并选择
Remote-SSH: Open Configuration File...。 - 选择默认的用户配置文件(通常是
C:\Users\你的用户名\.ssh\config)。 - 在文件中按照以下格式添加你的 Linux 服务器信息:
text
Host myserver # 自定义一个服务器别名
HostName 192.168.1.100 # 替换为你的服务器真实IP地址或域名
User your_username # 替换为你的Linux登录用户名
Port 22 # SSH端口,默认为22,如果修改过请填写实际端口
保存文件后,VS Code 就能识别这台服务器了。
🔌 第三步:发起远程连接
- 再次按下
Ctrl + Shift + P打开命令面板。 - 输入并选择
Remote-SSH: Connect to Host...。 - 在下拉列表中选择你刚刚配置的别名(例如
myserver)。 - 首次连接时,VS Code 会弹出窗口让你选择远程服务器的平台类型,请选择 Linux。
- 如果是第一次连接,系统可能会提示你确认指纹,点击"继续"即可。随后根据提示输入该用户的登录密码。
连接成功后,VS Code 左下角的绿色区域会显示 SSH: myserver,此时你打开终端或编辑文件,操作的都是远程 Linux 服务器上的环境。
💡 进阶技巧:配置免密登录(可选)
如果你觉得每次输入密码很麻烦,可以配置 SSH 密钥实现免密登录:
-
本地生成密钥 :在 Windows 的 CMD 或 PowerShell 中输入
ssh-keygen,一路回车即可生成公钥和私钥(通常在C:\Users\你的用户名\.ssh\目录下)。 -
上传公钥到服务器 :将本地的公钥文件(如
id_rsa.pub)内容,追加写入到 Linux 服务器的~/.ssh/authorized_keys文件中。 -
更新本地配置 :在你的
.ssh\config文件中,增加一行私钥路径指向:textIdentityFile 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 别名会带来极大的隐患:
- 解析失败风险高 :VS Code 的 Remote-SSH 扩展以及底层的 OpenSSH 对配置文件的编码非常敏感。如果
config文件中包含中文,很容易出现"找不到 Host"、"解析失败"或者连接时报错Could not resolve hostname的情况。 - 路径与空格问题 :如果你的 Windows 用户名本身就是中文(例如
C:\Users\张三\.ssh\config),这本身就容易导致 SSH 读取配置文件时发生权限或路径识别错误。如果在文件内部再使用中文别名,会进一步增加出错的概率。 - 跨平台兼容性差:纯英文的别名在任何操作系统(Windows, Mac, Linux)和任何终端工具下都能完美兼容,而中文则容易因为系统区域设置或编码格式(如 UTF-8 与 GBK)的不同引发各种莫名其妙的 Bug。
为了连接的绝对稳定,建议你养成以下习惯:
- Host 别名只用英文、数字和短横线 :比如用
aliyun-server、test-vm-01等清晰明了的英文组合。 - 严禁在关键行使用中文注释 :不仅
Host别名不要用中文,HostName、User等关键配置行的旁边也尽量不要写中文注释。某些旧版本的 OpenSSH 会因为解析到非标准字符而导致整段配置失效。
如果你已经写了中文别名并遇到了连接问题,最快的解决办法就是把它改成纯英文,保存后重新尝试连接即可。
3、最优配置
把 IdentityFile 放在最外层,是管理多台服务器时非常推荐的"最佳实践"。
在 SSH 的配置文件(config)中,写在最外层、使用通配符 Host * 的配置块被称为全局默认配置。它的作用是为所有服务器提供一套通用的默认参数。
⚙️ 生效规则
SSH 读取配置文件时遵循两个核心原则:
- 从上到下匹配:它会按顺序读取文件,如果多个地方都配置了同一个参数,后面的会覆盖前面的。
- 具体优先于全局 :你在某个具体的
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 服务器上的具体位置。通常它位于项目根目录下,名为 .venv 或 venv。
假设你的项目代码在 /home/apnts/SatelliteMonitor,那么 Python 解释器的完整路径通常是:
/home/apnts/SatelliteMonitor/.venv/bin/python
注意 :Linux 下 Python 可执行文件通常在
bin目录下,而不是 Windows 下的Scripts目录。
第二步:在 VS Code 中选择解释器
- 打开命令面板 :按下快捷键
Ctrl + Shift + P(Mac 上是Cmd + Shift + P)。 - 输入命令 :输入并选择
Python: Select Interpreter(Python: 选择解释器)。 - 查找环境 :
- VS Code 会自动扫描常见的虚拟环境路径。如果列表里出现了类似
./.venv (Python 3.x.x)的选项,直接点击它即可。 - 如果列表里没有 :点击列表顶部的 Enter interpreter path... (输入解释器路径)。
- VS Code 会自动扫描常见的虚拟环境路径。如果列表里出现了类似
- 输入路径 :在弹出的输入框中,粘贴你在第一步中确认的完整路径(例如
/home/apnts/.../bin/python),然后回车确认。
第三步:验证是否生效
选择完成后,请看 VS Code 窗口的右下角状态栏。
- 你应该能看到显示的 Python 版本旁边带有
('.venv': venv)字样。 - 或者显示的路径指向的是你 Linux 服务器上的那个路径,而不是 Windows 的
C:\Users\...。
进阶技巧:使用终端快速创建/激活
如果你还没创建 venv,或者想确认路径,可以直接使用截图下方已经打开的终端(Terminal):
-
进入项目目录 :
bashcd ~/SatelliteMonitor # 或者是你实际的项目路径 -
创建虚拟环境 (如果还没有):
bashpython3 -m venv .venv -
激活环境 (这一步不是必须的,但可以用来测试):
bashsource .venv/bin/activate -
查看当前 Python 路径 :
bashwhich 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 了。