通过SSH访问的Git克隆只能从特定服务器拒绝

我的办公室networking中有一台Ubuntu 12.04服务器,用于托pipe我们的git回购站。 服务器正在运行Gitlab 7.1.1,并且在非标准端口上有SSH。

除了一个例外,它适用于办公室内外的每个人。 例外是托pipe公司托pipe的服务器,所以我只有有限的访问权限。

当我尝试克隆非标准端口上的回购时,超时。 我认为这是因为托pipe公司阻止了出站端口。 为了解决这个问题,我在我的办公室路由器上设置端口转发,将端口22上的传入stream量转发到我在git服务器上的非标准端口。 我通过从Digial Ocean VPS克隆而不指定端口进行testing,并且工作正常。

但有问题的服务器现在给出了以下错误:

Access denied. fatal: The remote end hung up unexpectedly 

git服务器正在注册正在build立的SSH连接,并接受公钥,如/var/log/auth.log所示:

 Jan 20 15:09:07 gitlab sshd[3043]: Accepted publickey for git from 10.0.1.254 port 60771 ssh2 Jan 20 15:09:07 gitlab sshd[3043]: pam_unix(sshd:session): session opened for user git by (uid=0) Jan 20 15:09:09 gitlab sshd[3162]: Received disconnect from 10.0.1.254: 11: disconnected by user Jan 20 15:09:09 gitlab sshd[3043]: pam_unix(sshd:session): session closed for user git 

这看起来没有任何其他身份validation请求日志中不同,所以我不知道为什么克隆失败?

我在Github上设置了一个testing回购,并且有问题的服务器克隆通过SSH。 它只是有一个问题,从我的办公室服务器通过SSH由于某种原因回购。

还值得注意的是有问题的服务器可以使用用户名和密码通过HTTP进行克隆,这只是通过SSH,这是一个问题。

任何想法是什么问题在这里?

PS,我是一个比服务器pipe理员更多的编码器,我参与到这个尝试改善我公司的部署过程,所以这对我来说是新的

我已经解决了这个问题

问题是有问题的服务器的公钥已经被添加为Gitlab的“部署密钥”,用于早期的无关testing。 然后将其作为部署密钥删除,但由于某种原因,密钥仍保留在Gitlab数据库中。 Gitlab然后让我重新添加相同的密钥给testing用户,而不会抱怨它已经存在于数据库中的其他地方。 但是当用这个密钥进行validation时,Gitlab会查找密钥,并得到第一个“孤立”密钥,所以它只会给出匿名访问,这显然不允许克隆。

为了解决这个问题,我find了孤立的密钥ID,并用git-shell删除它:

 ./bin/gitlab-keys rm-key key-21 

哪里21是孤儿钥匙的ID。

现在一切都按预期工作。