VSCode如何配置多个SSH Key连接不同账号 - config文件映射路由终极设置

千婷小哥_7452

千婷小哥_7452

2026-03-23

391人浏览

原创

ssh config文件windows路径为c:\users{用户名}.ssh\config,macos/linux为~/.ssh/config,权限须设为600;host别名需与git远程url主机名完全匹配;identityfile必须用绝对路径且私钥建议无密码或已加入ssh-agent。

vscode如何配置多个ssh key连接不同账号 - config文件映射路由终极设置

SSH config 文件写在哪、怎么命名

Windows 用户的 config 文件必须放在 C:\Users\{用户名}\.ssh\config(注意是 config,无后缀);macOS / Linux 是 ~/.ssh/config。文件权限必须是 600(macOS/Linux 下执行 chmod 600 ~/.ssh/config),否则 OpenSSH 会直接忽略它——这是最常被跳过的一步,连 ssh -T git@github.com 都可能报 “Permission denied (publickey)” 却查不到原因。

常见错误现象:ssh -F ~/.ssh/config -v git@github.com 显示 “no such identity” 或压根没读 config;实际是因为路径错、权限错、或文件名写成 config.txt。

Host 别名必须和 Git remote URL 里的主机名完全匹配

Git clone 或 push 时,SSH 只认 URL 中的主机字段。比如你设了 Host github-work,那远程地址必须写成 git@github-work:org/repo.git,而不是 git@github.com:org/repo.git——哪怕你在 config 里写了 HostName github.com,也不影响匹配逻辑。

实操建议:

  • 用 git remote set-url origin git@github-work:org/repo.git 替换原始 remote
  • 别指望 alias 能“自动替换” github.com;SSH 不做 DNS 解析级别的重写
  • 多个账号共用 github.com 时,必须为每个账号定义不同 Host 别名(如 github-personal、github-work)

IdentityFile 路径必须写绝对路径,且私钥不能带密码(或需 ssh-agent)

IdentityFile 不支持波浪线 ~ 或相对路径。写 ~/.ssh/id_rsa_work 会被当成字面字符串,导致找不到密钥。必须展开为完整路径,例如 Windows:C:\Users\Alice\.ssh\id_rsa_work,macOS:/Users/Alice/.ssh/id_rsa_work。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载

另一个坑:如果私钥设置了密码,每次 git 操作都会卡住等输入——除非已用 ssh-add 加入 agent。VSCode 内置终端默认不继承系统 ssh-agent 环境,所以即使你本地能免密登录,VSCode 的 Source Control 面板仍可能失败。

解决方法:

  • macOS:确保 ~/.ssh/config 含 AddKeysToAgent yes
  • Windows(OpenSSH for Windows):启动 ssh-agent 服务,并在 VSCode 终端中运行 ssh-add ~/.ssh/id_rsa_work
  • 或者干脆用无密码私钥(仅限可信环境)

VSCode 的 Git 操作是否走 SSH config 完全取决于它调用的 git 二进制

VSCode 默认使用系统 PATH 里的 git,不是它内置的。只要你的终端里 git clone git@github-work:org/repo.git 能成功,VSCode 就能成功——反之亦然。验证方式:打开 VSCode 内置终端,执行 which git 和 git config --global core.sshCommand,确认没意外覆盖。

容易被忽略的点:

  • 某些 VSCode 插件(如 GitHub Pull Requests)会绕过 git 命令,直接调用 GitHub API,此时 SSH config 完全不生效
  • 如果设置了 core.sshCommand(例如强制用 ssh -i ~/.ssh/xxx),它会优先于 ~/.ssh/config 中的 IdentityFile,造成冲突
  • WSL 用户要注意:Windows VSCode 和 WSL 中的 git 配置是两套,别在 WSL 里配好就以为 Windows GUI 也生效
配置真正生效的关键,往往不在多写几行 Host,而在于路径、权限、匹配规则这三处是否严丝合缝。少一个斜杠、多一个空格、忘改一次 remote URL,都可能让整个映射链断在第一环。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

vscode

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1638

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2444

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

5924

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

5229

6

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

2024.03.22

6934

16

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2024.04.29

9694

11

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

2025.07.29

4919

17

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.07

5227

13

常用字符串方法大全
常用字符串方法大全

常用字符串方法大全

2025.08.08

2688

14

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程