罕见的Git服务器错误:“拒绝pubkey”(但密钥测试有效)

时间:2012-07-28 21:48:11

标签: git authentication ssh putty gitolite

我这里有一个特定的问题,可能是客户问题。但是,我收到服务器错误。所以请仔细阅读,也许你会同意我这是一个非常奇怪的问题,希望你能帮我解决它!:)

以下是我的情况:

我在家中安装了Git和Gitolite服务器,并使用了密钥验证功能。我的私钥和公钥经过验证,工作正常,直到上周。现在在我的客户端计算机#1上,我无法从我的Git服务器推送/拉取任何引用。

我尝试使用完全相同的存储库(安装在同一个驱动器上)使用相同的密钥,但使用我的笔记本电脑,我的服务器将接受密钥...

我尝试卸载/重新安装Git,生成其他密钥对,重新检查我的SSH配置,重新启动我的服务器服务,但没有任何作用。当我在DEBUG模式下检查我的SSH日志时,我几乎无法获得有关错误的任何详细信息:

Jul 28 06:46:28 git-server sshd[5100]: debug1: Forked child 19124.
Jul 28 06:46:28 git-server sshd[19124]: Set /proc/self/oom_adj to 0
Jul 28 06:46:28 git-server sshd[19124]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
Jul 28 06:46:28 git-server sshd[19124]: debug1: inetd sockets after dupping: 3, 3
Jul 28 06:46:28 git-server sshd[19124]: Connection from xx.xx.xx.xx port 53847
Jul 28 06:46:28 git-server sshd[19124]: debug1: Client protocol version 2.0; client software version PuTTY_Local:_Jun__3_2012_14:48:17
Jul 28 06:46:28 git-server sshd[19124]: debug1: no match: PuTTY_Local:_Jun__3_2012_14:48:17
Jul 28 06:46:28 git-server sshd[19124]: debug1: Enabling compatibility mode for protocol 2.0
Jul 28 06:46:28 git-server sshd[19124]: debug1: Local version string SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze1
Jul 28 06:46:28 git-server sshd[1002]: debug1: server_input_channel_req: channel 0 request winadj@putty.projects.tartarus.org reply 1
Jul 28 06:46:28 git-server sshd[1002]: debug1: session_by_channel: session 0 channel 0
Jul 28 06:46:28 git-server sshd[1002]: debug1: session_input_channel_req: session 0 req winadj@putty.projects.tartarus.org
Jul 28 06:46:29 git-server sshd[19124]: debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-1024
Jul 28 06:46:29 git-server sshd[19124]: debug1: Checking blacklist file /etc/ssh/blacklist.RSA-1024
Jul 28 06:46:29 git-server sshd[19124]: debug1: temporarily_use_uid: 1001/1001 (e=0/0)
Jul 28 06:46:29 git-server sshd[19124]: debug1: trying public key file /home/gitolite/.ssh/authorized_keys
Jul 28 06:46:29 git-server sshd[19124]: debug1: fd 4 clearing O_NONBLOCK
Jul 28 06:46:29 git-server sshd[19124]: debug1: restore_uid: 0/0
Jul 28 06:46:29 git-server sshd[19124]: debug1: temporarily_use_uid: 1001/1001 (e=0/0)
Jul 28 06:46:29 git-server sshd[19124]: debug1: trying public key file /home/gitolite/.ssh/authorized_keys
Jul 28 06:46:29 git-server sshd[19124]: debug1: fd 4 clearing O_NONBLOCK
Jul 28 06:46:29 git-server sshd[19124]: debug1: restore_uid: 0/0
**Jul 28 06:46:29 git-server sshd[19124]: Failed publickey for gitolite from xx.xx.xx.xx port 53847 ssh2**
Jul 28 06:46:29 git-server sshd[19124]: debug1: do_cleanup

现在我认为我的服务器运行良好,因为我已经在其他两个客户端位置测试了我的Putty密钥,一切正常。也许是我的工作站在发送我的Putty密钥时遇到了麻烦。如果它是客户端问题,这里是我的电脑规格:

  • intel i7 3770 x64
  • windows 7 ultimate
  • 16gb ram

提前谢谢!

3 个答案:

答案 0 :(得分:1)

检查公钥是否格式如下:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA5k6P+EKZ/G8+YT8kpHUmyp2d+4S/1kIAqPQcIt+qjpf9i0v9pwWCJdgYhiwD18pjUL2tM0D6zofKF3mQJdJbW22yAqBQ/YmswEHcH+1/QxHxaYHvXxaqakgvFcWW3DZ/ShsgWfJyhw7naKMWKcgAJJHPJfmAHtEWPLDhBAzpEQc=

并检查它是否是已知主机。

答案 1 :(得分:1)

毕竟这一次;问题解决了!

显然,注册管理机构的Putty问题会混淆ToirtoiseGit Windows客户端。我很惊讶这个案例在任何地方都没有记录。感谢我的朋友找到了解决方案。

因此,在Windows上,所有会话信息和Putty设置都位于此处

HKEY_CURRENT_USER\Software\SimonTatham\PuTTY

通过删除“会话”和“SshHostKeys”文件夹,这些文件夹在之后自动重新生成,解决了问题。但我们不知道为什么。

更多的挖掘使我们得出的结论是,当通过putty界面更改默认设置时,它会导致Plink(ToirtoiseGit的putty代理),坚持Putty的默认设置,而不是专注于“自动 - 装入油灰钥匙“设置。

底线是

  1. 如果您有这些症状,请清空HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\Default Settings
  2. 中的“PublicKeyFile”变量
  3. 或者......根本不要在Putty !!!中编辑/保存默认设置。
  4. 我希望这个解决方案也会帮助别人! :)

答案 2 :(得分:0)

我在Windows上遇到了与PuTTY类似的问题,我在那里更改了用于对各种服务器进行身份验证的密钥。但是在我保存的一些会话中,它仍然有一条原始密钥文件的路径,不再有效。

解决方案是通过已保存的会话捕获并删除有问题的密钥文件 - 我认为它位于Connection / SSH / Auth