vscode 未使用各自的 ssh 密钥连接到多个 gitlab 帐户

vscode not connecting to multiple gitlab accounts using their respective ssh keys

所以对于 windows,我看到默认的 ssh 客户端配置应该放在 C:\Users\Admin\.ssh\config 并且我使用相同的配置,我也是管理员用户。

我添加了以下 ssh 客户端配置:

PS C:\Users\Admin> type .\.ssh\config
Host gc
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/company_gitlab
Host gp
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/gitlab_personal

我从 Powershell 对其进行了测试,它是 我的公司和个人 GitLab 帐户使用各自的 ssh 密钥。

PS C:\Users\Admin> ssh -T git@gc
Enter passphrase for key 'C:\Users\Admin/.ssh/company_gitlab':
Welcome to GitLab, @johnwilson!

PS C:\Users\Admin> ssh -T git@gp
Enter passphrase for key 'C:\Users\Admin/.ssh/gitlab_personal':
Welcome to GitLab, @jwilson!

但是当涉及到 vscode 时,当我尝试将更改推送或拉取到远程存储库时,公司和个人 GitLab 帐户都会出现以下错误。

> git push -u gc master
git@gitlab.com: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.

> git push -u gp master
git@gitlab.com: Permission denied (publickey,keyboard-interactive).
fatal: Could not read from remote repository.

我也尝试了here的建议

PS C:\Users\Admin\ownCloud\Company\GitLab\userlist> git remote add origin git@gc:company/infra_code/userlist.git
PS C:\Users\Admin\ownCloud\Company\GitLab\userlist> git remote -v
origin  git@gc:company/infra_code/userlist.git (fetch)
origin  git@gc:company/infra_code/userlist.git (push)

PS C:\Users\Admin\ownCloud\Company\GitLab\userlist> git ls-remote origin
Enter passphrase for key 'C:\Users\Admin/.ssh/company_gitlab':
611b36ef47056773c288499cb6974d8671196d78        HEAD
611b36ef47056773c288499cb6974d8671196d78        refs/heads/master

我很困惑,所以 vscode 没有在 windows 上选择默认的 ssh 客户端配置 C:\Users\Admin\.ssh\config ?。

还是我遗漏了什么?

检查与名为 'gc'

的遥控器关联的遥控器 URL
cd C:\path\to\gc\repo
git remote -v

如果 URL 以 git@gitlab.com:... 开头,它将不会使用 ~/.ssh/config 文件及其 gc 条目。

换成合适的URL

git remote set-url gc gc:<me>/<myrepo>

然后 VSCode 将选择正确的条目,假设是 运行 作为用户 Admin


OP JohnW confirms in the discussion:

I added an SSH key without a passphrase, which is working for vscode. So this is bug with VSCode cannot connect with ssh key with passphrase?

您需要先确保 ssh-agent 已激活。
参见“Auto-launching ssh-agent on Git for Windows

SSH 代理启动后(您的 SSH 私钥密码缓存在其中),您可以启动 VSCode。然后它应该可以工作。