我在 Windows 10 机器上配置 cygwin 以使用带有 ssh 密钥的 git 时遇到了麻烦。
我从他们的网站安装了 cygwin 的最新版本(安装版本 2.925)并添加/确保了包 gcc、git(git、git gui、git svn、gitk)、make、vim 和 openssh。
我为我的 cygwin 实例配置了密钥,就像我之前在其他机器上所做的那样(包括在同一台 Windows 机器上运行正常的 MSYS2 设置):
- 生成新密钥
- 确保代理正在运行
- 将密钥添加到代理
- 将密钥添加到 github 并授权我的组织
- 测试输出如下:
ssh -T [email protected]
Hi <user>! You've successfully authenticated, (...)
但是,当我通过 ssh 进入git clone
repo 时,我无法访问它:
$ git clone [email protected]:<org>/<repo>.git
Cloning into <repo>...
[email protected]: Permission denied (publickey)
...
我不确定如何解决这个问题,因为对我来说,似乎我已经正确配置了一切,因为它能够ssh
直接进行身份验证。
这让我想问以下问题:
- 是否有可能是我没有正确配置密钥,但在测试时仍然以某种方式收到了该身份验证消息
ssh
? - 是否有可能在运行过程中发生的任何事情
git clone
最终都缺少与我运行时终端可用的相同环境变量ssh
? - 即使 MSYS2 和 MSYS2 不是同时运行的,那么 MSYS2 设置是否也可能导致问题?
我尝试过的一些方法:
- 检查 Windows 机器上没有运行其他版本的 git
- 根据我在其他帖子/文章中看到的建议,从 cygwin 添加/删除各种 git 包
- 手动添加
~/.ssh/config
内容文件
Host github.com
IdentityFile ~/.ssh/id_ed25519
编辑:
为了尝试查看运行过程中运行的 ssh 命令的更多输出,git clone
我运行了git -c core.sshCommand="ssh -v" clone <repo address>
,结果运行得很好。我首先尝试将其设置为 bash 变量,但没有成功(无论是克隆存储库还是获取更多输出):
$ bash
$ GIT_SSH_COMMAND="ssh -v"
$ git clone <repo>
这让我相信这确实是一些环境问题,无法传递到克隆过程中使用 ssh 命令的地方。仍然想知道这里的“真正”解决方案或为什么会发生这种情况的解释,希望这些额外的信息可以为某人指明更好的方向。