我遇到了一个有趣的问题,我真的不知道从哪里开始寻找解决方案!
我们办公室的 VCS 机器正在运行 gitweb,我的公钥在这台机器上没问题。我可以使用我的密钥从我的机器毫无问题地访问存储库。
但是,如果我使用任何类型的远程 shell,密钥验证就不起作用!它会回退到密码验证,但 git 用户配置为没有密码,所以这不行!
我已经通过 SSH 连接到办公室中的另一台机器,然后从那里再连接到我的机器来确认问题。此外,我还通过物理方式使用另一台机器通过 SSH 连接到我的机器,甚至通过 VPN 从不同的网络访问我的机器。在所有情况下,使用 git 服务器的身份验证都会失败,尽管它们与我在本地运行的命令相同。
我的第一反应是 gitosis(自动处理密钥)配置错误。它确实包含一些密钥上的附加安全选项:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
但是,问题只限于我一个人 - 其他机器似乎能够毫无问题地进行身份验证,无论 shell 是远程的还是本地的,这表明我的 SSH 配置错误。我确实通过编辑将默认端口从 22 更改为其他端口,/etc/ssh/sshd_config
但其他所有内容都应该为默认值。可能其他人已经编辑了配置,因此任何需要注意的事情都会很感激!
我的机器运行的是 Ubuntu 9.04(显然,升级可能是一个解决方案)。真的,我只是在寻找一个起点——用谷歌搜索一些东西来解决问题。如果这是以前有人遇到过的简单问题,那就太好了,但正如我所说,我现在真的不知所措!
提前致谢!
答案1
我不清楚您对哪些密钥和配置文件驻留在哪些系统上的描述。但是,如果您习惯于从未将私钥复制到的框中使用私钥,那么您就是通过使用 SSH 代理转发来实现这一点的。尝试从您上面引用的选项列表中删除“no-agent-forwarding”,看看这是否能解决您的问题。
答案2
我的 ~/.ssh 文件夹中有多个密钥。清除所有密钥,只留下主 id_dsa 密钥,然后将该密钥重新添加到 gitosis,问题就解决了。
我为什么会遇到如此奇怪的行为仍然是个谜!它一定是通过 SSH / 在本地 shell 上以不同的方式处理密钥。如果有人能对此有所解释,我会很感兴趣(如果您需要的话,我有本地 shell 和远程 SSH shell 的 -v 和 -vvv 输出)。
我想添加这个以防其他人遇到这个问题!(虽然很难搜索,因为关于如何设置 ssh 密钥的问题太多了)
非常感谢所有提供帮助的人。