我有一个带有一些 git 存储库的 Debian 服务器。我使用以下代码生成了两个密钥:
keygen -t rsa
这给了我 root.pub 和 user.pub 文件。root.pub 附加到 /root/.ssh/authorized_keys,user.pub 附加到 /home/user/.ssh/authorized_keys。
我已将密钥转换为 putty 格式 (ppk):root.ppk 和 user.ppk。现在我能够使用这些密钥通过 putty 以 root 和 user 身份登录 - 一切正常!
当涉及到 TortoiseGit(最新版本)时,魔法就出现了。我设置了两个遥控器:
[remote "user"]
fetch = ...
url = ssh://user@server/path
puttykeyfile = C:\\path\\user.ppk
[remote "root"]
fetch = ...
url = ssh://root@server/path
puttykeyfile = C:\\path\\root.ppk
使用 root.ppk 一切正常 - 我可以推送和拉取到我的存储库而无需输入密码。但 user.ppk 失败了 - 我得到了 TortoisePLink 窗口并提示输入密码。
/var/log/auth.log 中没有任何内容。我完全被难住了。TortoiseGit(或 Windows)是否需要更多配置?
更新:似乎 TortoiseGit 将密钥缓存或存储在某处。如果我将 root.pub 添加到 /home/user/.ssh/authorized_keys,无论我在 TortoiseGit 设置中指定哪个密钥,我都可以使用两个遥控器进行推送/拉取。终止 TortoiseCache.exe、重新启动 pageant、重新启动 Windows 机器均无效。
它肯定会将密钥存储在某个地方。无论我配置什么,ssh 登录都只使用 root.ppk。所以问题是“TortoiseGit 除了在 .git/config 中存储 ppk 密钥外,还在哪里存储“?
答案1
你实际上是这个意思吗:
root.pub 被附加到 /root/.ssh/authorized_keys,而 user.pub 被附加到 /home/user/authorized_keys。
因为这表明你把 user.pub 放在了错误的文件中 - 它应该是
/home/user/.ssh/authorized_keys
答案2
J 刚刚在我的另一台 Windows 机器上做了完全相同的事情。一切正常。我注意到 ssh-keygen 命令来自 MSysGit 发行版,而在第一台机器上我尝试了 Cygwin 命令。