Clone do Git sobre o acesso SSH negado apenas a partir de um servidor específico

1

Eu tenho um servidor Ubuntu 12.04 dentro da minha rede de escritórios que está sendo usado para hospedar nossos git repos. O servidor está executando o Gitlab 7.1.1 e possui SSH em uma porta não padrão.

Funciona perfeitamente para todos dentro e fora da rede do escritório, com uma exceção. A exceção é um servidor gerenciado com uma empresa de hospedagem, portanto, só tenho acesso limitado a ele.

Quando tento clonar o repositório na porta não padrão, o tempo limite é excedido. Eu suponho que isso é porque a porta de saída é bloqueada pela empresa de hospedagem. Para resolver isso, configurei o encaminhamento de porta no roteador do meu escritório para encaminhar o tráfego de entrada na porta 22 para minha porta não padrão no servidor git. Eu testei clonando a partir de um Digial Ocean VPS sem especificar a porta, e funcionou bem.

Mas o servidor problemático agora apresenta o seguinte erro:

Access denied.
fatal: The remote end hung up unexpectedly

O servidor git está registrando uma conexão SSH sendo feita e aceitando a chave pública, como mostrado em /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

Isso não parece diferente de qualquer outra solicitação de autenticação no log, por isso não tenho idéia do motivo do fracasso do clone?

Eu configurei um repo de teste no Github, e o servidor problemático clona bem no SSH. Só tem um problema com repos do meu servidor de escritório por SSH por algum motivo.

Também é importante notar que o servidor problemático pode clonar através de HTTP com um nome de usuário e senha bem, é apenas por SSH que é um problema.

Alguma ideia de qual é o problema aqui?

PS, sou mais um programador do que administrador de servidores, estou me envolvendo nisso para tentar melhorar o processo de implantação da minha empresa, e muito disso é novo para mim

    
por shauno 20.01.2015 / 14:41

1 resposta

1

Eu resolvi isso.

O problema era que a chave pública do servidor problemático já havia sido adicionada como uma "chave de implantação" ao Gitlab para testes não relacionados anteriores. Em seguida, foi excluída como uma chave de implantação, mas, por algum motivo, a chave persistiu no banco de dados do Gitlab. O Gitlab então me deixou adicionar novamente a mesma chave a um usuário de teste sem reclamar que ele já existia em outro lugar no banco de dados. Mas, ao tentar autenticar com essa chave, o Gitlab procurava a chave e obtinha a primeira chave "órfã", de modo que só daria acesso anônimo que obviamente não permitiria o clone.

Para resolver o problema, encontrei o ID da chave órfã e removi-o com o git-shell:

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

Em que 21 era o ID da chave órfã.

Tudo está funcionando como esperado.

    
por 28.01.2015 / 08:28