Gitlab - git 的身份验证失败太多

Gitlab - Too many authentication failures for git

我的命令行 git 从上周开始就不能用了,我只记得我初始化了一个本地文件夹到 git 版本控制中,并添加了一个远程 git ref它。然后我的git无法推拉。它显示:

git clone git@gitlab.xxx.com:xxx/myproj.git myproj
Cloning into 'myproj'...
Received disconnect from 192.168.xxx.xxx: 2: Too many authentication failures for git
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

奇怪的是,我在 JetBrain Idea 中的版本控制工作正常,它仍然可以拉取或推送无法在命令行中拉取的项目。

我之前将id_rsa.pub添加到gitlab,现在我重新添加了一次,但是没有用。

我的 ssh 调试信息

ssh -v git@gitlab.xxx.com

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to gitlab.xxx.com [192.168.xxx.xxx] port 22.
debug1: Connection established.
debug1: identity file /Users/abc/.ssh/id_rsa type -1
debug1: identity file /Users/abc/.ssh/id_rsa-cert type -1
debug1: identity file /Users/abc/.ssh/id_dsa type -1
debug1: identity file /Users/abc/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA d7:11:d8:62:a6:30:1d:4a:c7:f1:99:bd:ba:54:de:60
debug1: Host 'gitlab.corp.com' is known and matches the RSA host key.
debug1: Found key in /Users/abc/.ssh/known_hosts:127
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn0
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn6
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn1
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn2
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn5
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn8
Received disconnect from 192.168.100.218: 2: Too many authentication failures for git
abc@LiuzhMacbook:~/.ssh$
abc@LiuzhMacbook:~/.ssh$ ls
authorized_keys  id_rsa           known_hosts      tmp/
abc@LiuzhMacbook:~/.ssh$ rm known_hosts
abc@LiuzhMacbook:~/.ssh$ ssh -v git@gitlab.corp.com
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to gitlab.corp.com [192.168.100.218] port 22.
debug1: Connection established.
debug1: identity file /Users/abc/.ssh/id_rsa type -1
debug1: identity file /Users/abc/.ssh/id_rsa-cert type -1
debug1: identity file /Users/abc/.ssh/id_dsa type -1
debug1: identity file /Users/abc/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA d7:11:d8:62:a6:30:1d:4a:c7:f1:99:bd:ba:54:de:60
The authenticity of host 'gitlab.corp.com (192.168.100.218)' can't be established.
RSA key fingerprint is d7:11:d8:62:a6:30:1d:4a:c7:f1:99:bd:ba:54:de:60.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.corp.com,192.168.100.218' (RSA) to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn0
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn6
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn1
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn2
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn5
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Offering RSA public key: /Users/abc/.ssh/id_rsa.cn8
Received disconnect from 192.168.100.218: 2: Too many authentication failures for git

首先设置你的ssh密钥。

如果我们的密钥设置正确 - 尝试重新启动 ssh-agent

eval $(ssh-agent)

您应该会看到进程的 PID,并且您的密钥将会加载。

要手动添加密钥,请使用:ssh-add。这将从您的默认 .ssh 文件夹

加载密钥

您可以使用不同的 ssh url 以引用所需的正确 public/private 密钥。
在您的 HOME/.ssh 中添加一个名为 config:

的文件
Host            mygitlab
Hostname        gitlab.xxx.com
User            git
IdentityFile    ~/.ssh/id_rsa.gitlab
IdentitiesOnly yes

并更改您的 url:

git clone mygitlab:xxx/myproj.git myproj

这样一来,您就可以避免默认的 ssh 行为,即提供每个密钥供 ssh 尝试。

终于 - 主机的原始重启工作正常,但想知道到底发生了什么......

SourceTree 中,尝试将 SSH ClientPuTTY/Plink 更改为 Open SSH

运行 linux
以下对我有用(我使用 gitlab):

  eval $(ssh-agent -s)
  ssh-add ~/.ssh/<ssh_directory>
  ssh -T git@gitlab.com

并在一个命令中:

 eval $(ssh-agent -s) &&  ssh-add ~/.ssh/gitlab &&   ssh -T git@gitlab.com

对我来说,问题是我在 .ssh 文件夹中有很多旧密钥。所以,只需删除它们,一切正常。