Pergunta

Eu tenho uma configuração de túnel SSH no meu macbook, assim ...

$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com

Assim eu posso ssh para localhost: 22222 e vai acabar na gitosis-servidor por trás do firewall.

Eu criei um arquivo id_rsa.pub local, copiado no servidor de gitosis (executando CentOS5) e importou para gitosis usando ...

# sudo -H -u gitosis gitosis-init 

It was successful as I can see the public key in /var/lib/gitosis/.ssh/authorized_keys.

Back on my macbook I setup a ~/.ssh/config file with the following...

Host gitosis-server
Hostname localhost
HostKeyAlias gitosis-server.domain.com
  Port 22222

So...I'm thinking this command should work...

$ git clone gitosis@gitosis-server:gitosis-admin.git

It does not however as it comes up asking for a password....when the public keys should be working.

Initialized empty Git repository in /Users/USER/Development/gitrepo/gitosis-admin/.git/
gitosis@localhost's password: 

Any ideas on getting git working through to a gitosis server behind a firewall?

Thanks,
Matt


EDIT - Adding Debug From SSH Attempt

I did this command, 'ssh -vvv gitosis@gitosis-server'. I get some debugging back and it doesn't seem to like my Identity.

debug2: key: /Users/USER/.ssh/id_rsa.gitosis (0x1019b0)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/USER/.ssh/id_rsa.gitosis
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
gitosis@localhost's password: 

EDIT 2

OK...Definately a bad key. I double checked all my keys again and of course found the gitosis-server was holding a bad key in the authorized_keys file.

debug1: userauth-request for user gitosis service ssh-connection method none debug1: attempt 0 failures 0 debug1: PAM: initializing for "gitosis" debug1: PAM: setting PAM_RHOST to "firewall.domain.com" debug1: PAM: setting PAM_TTY to "ssh" debug1: userauth-request for user gitosis service ssh-connection method publickey debug1: attempt 1 failures 1 debug1: test whether pkalg/pkblob are acceptable debug1: temporarily_use_uid: 102/103 (e=0/0) debug1: trying public key file /var/lib/gitosis/.ssh/authorized_keys debug1: restore_uid: 0/0 debug1: temporarily_use_uid: 102/103 (e=0/0) debug1: trying public key file /var/lib/gitosis/.ssh/authorized_keys2 debug1: restore_uid: 0/0 Failed publickey for gitosis from FIRE.WALL.IP.ADDRESS port 52453 ssh2

Eu levei um olhar mais atento ao arquivo authorized_keys no servidor gitosis .... e foi incorreto. Eu dobro verificado o arquivo de chave pública que eu tinha copiado para / tmp de minha estação de trabalho e foi o correto, mas diferente do que era em authorized_keys. Eu deletei o arquivo authorized_keys no servidor e reran o 'sudo -H -u gitosis gitosis-init

Eu atualizei-lo manualmente editando authorized_keys e adicionando a chave correta, e então eu tenho que trabalhar a partir de minha estação de trabalho através do túnel para uma ou duas tentativas. Em seguida, ele parou de trabalhar como antes. Voltei para o arquivo authorized_keys no servidor gitosis, e com certeza .... gitosis tinha revertido de volta para a chave antiga que não funciona.

Por que ele está fazendo isso .... voltando a uma chave pública ruim .... mesmo depois de eu tentei adicionar-lo com o comando acima ... que não conseguiu mudar isso .... em seguida, mudou-lo manualmente. ... que trabalhou, mas git então revertido para o mau novamente.

É como gitosis mantém lembrando-se da primeira chave I colocar lá .... e não deixe-me alterá-lo para a chave corrigido.

frustrante ...

Matt

Foi útil?

Solução

Dar seguimento:

Eu não estou certo porque gitosis insistiu em reutilização de uma chave pública ruim. Tentando forçá-lo a tomar a chave correta não funcionou.

Então, hoje eu só removido e reinstalado o pacote gitosis na minha caixa de CentOS5.

yum remove gitosis
rm -rf /var/lib/gitosis
yum install gitosis
sudo -H -u gitosis gitosis-init < /tmp/id_rsa.gitosis.pub  #the correct key

No meu Mac, eu SSH túnel localhost: 22222 através do firewall para gitosis-servidor: 22.

$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com

No meu Mac, eu criei ~ / .ssh / config parecida com esta ...

Host gitosis-server
Hostname localhost
IdentityFile ~/.ssh/id_rsa.gitosis
HostKeyAlias gitosis-server.domain.com
  Port 22222

Então ... seguindo as instruções neste site ...

http: / /scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

... tudo depois ... "Aqui um pouco de magia legal acontece Executar este em sua máquina local:." ... simplesmente funciona ... exceto lembre-se de substituir o "git" username com "gitosis".

Hope todas as bobagens que ajuda a alguém. Graças também para as sugestões que eu tenho aqui .... ele ajudou a reduzir o problema.

Matt

Outras dicas

Minha configuração para situação semelhante (de trabalho)

Eu tenho configuração similar para repo.or.cz (que é por alguma razão nulo rota bloqueada por ISP eu uso, polonês ISP Telekomunikacja SA (tpnet)), e ele funciona para mim:

eu execute o seguinte comando executado para configurar SSH tunel antes de tentar conectar: ??

$ autossh -M 20000 -f -N -L 2222:repo.or.cz:22 user@gateway.example.com

(eu uso autossh vez de ssh para reconectar se eu me desconectar, ou seja, para manter a conexão para cima). Verifique se identidades apropriados são adicionados ao agente de autenticação SSH:

$ ssh-add -l
2048 d7:d3:69:f5:0f:f9:5e:aa:e0:0b:28:c2:03:42:09:66 /home/user/.ssh/id_dsa_gateway.example.com (DSA)
1024 11:a2:29:fe:37:12:a7:33:c4:23:b0:e1:82:92:e0:6a /home/user/.ssh/id_dsa_repo.or.cz (DSA)

Eu uso chaveiro ter que fornecer senhas para minhas chaves SSH privadas apenas uma vez , no início da sessão.

Eu tenho o seguinte configurado na minha ~/.ssh/config:

Host repo.or.cz
        # NoHostAuthenticationForLocalhost yes
        HostName localhost
        Port 2222

Esta configuração funciona para mim sem problemas.


Depuração sua situação

Como para depurar sua situação?

Em primeiro lugar, gostaria de verificar se eu posso fazer login para Gateway usando "ssh user@firewall.domain.com", para verificar se túnel SSH pode ser configurado. Se você estiver em Linux você pode usar por exemplo netstat --tcp para verificar se há conexão estabelecida para porta de entrada; em outros sistemas operacionais e ambientes pode encontrar utilidades semelhantes.

Verifique se você pode se conectar corretamente para gitosis. (Se bem me lembro Gitorious está usando gitosis para gerenciar o acesso via SSH, então eu usei resposta do Gitorious no exemplo abaixo)

$ ssh gitosis@gitosis-server
Need SSH_ORIGINAL_COMMAND
                             Connection to  closed.

Se ele não fazer algo semelhante ao anterior (repo.or.cz retornos "fatal:? O que você acha que eu sou um shell"!, GitHub retornos "user Hi Você autenticado com êxito, mas GitHub faz não fornecer acesso shell "), verificar onde ele falha com "ssh -v gitosis @ gitosis-server":.

$ ssh -v gitosis@gitosis-server
[...]
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_dsa_gitosis-server
debug1: Remote: Forced command: gitosis-server user
[...]
debug1: Authentication succeeded (publickey)

Esta é uma questão ssh e não (ainda) uma questão git.

ssh -v é seu amigo como ele vai te dar informações de depuração sobre o que os métodos de autenticação e chaves ssh está tentando usar.

vezes Nove em cada dez Eu acho que este é um problema com permissões em arquivos de chave. ssh gosta de seu diretório .ssh e seu arquivo id_rsa ser apenas graváveis ??por 'user' e meu umask permite que arquivos graváveis ??grupo por padrão. ssh -v vai dizer se este é o caso em sua situação.

Editar

Ele se parece com o servidor sshd não aceita sua identidade. Eu não sei se você tem acesso ao servidor remoto, mas executando um servidor sshd na depuração modo pode ajudar.

Running algo como isto permite uma conexão na porta dada (para que ele não interrompe o serviço sshd normal) e saídas de informações de depuração. Isso pode ajudar a depurar porque o servidor não gosta de sua identidade.

sshd -d -p 2022

Se suas corridas 'normais' do serviço sshd com parâmetros extras certifique-se de fornecer estes para a versão de depuração também.

Você diz que pode ssh para localhost:2222 com sucesso. Para verificar se você configurou ~/.ssh/config corretamente, você pode ssh para apenas gitosis-server?

ssh gitosis-server

Eu tive um problema semelhante e eu resolvi-lo com:

[srydberg@zeus ~]$ echo $SSH_AUTH_SOCK
/tmp/keyring-KXX3Aw/ssh
[srydberg@zeus tmp]$ sudo rm -rf keyring-KXX3Aw/

Talvez suas chaves foram armazenadas em cache lá?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top