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。然后它应该可以工作。
所以对于 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 对其进行了测试,它是
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'
的遥控器关联的遥控器 URLcd 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。然后它应该可以工作。