O Git não pede passphrase durante o pull / push no terminal

0

Estou tentando usar o git do terminal na minha área de trabalho do Ubuntu 12.04. Meu repositório está hospedado no Github e eu tenho a chave para o meu desktop. Sempre que eu fizer "git pull" ou "git push", uma caixa de diálogo irá aparecer pedindo minha senha. Isso funciona bem se eu digitar corretamente a frase secreta. No entanto, se eu estiver conectado à minha área de trabalho por meio do ssh e fizer um git pull ou push, o comando não solicitará a passphrase e gerará o seguinte erro:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Esse erro faz sentido porque não estou inserindo minha frase-senha. Então, a questão é, como posso obter a senha solicitada no terminal?

Obrigado!

    
por Damian 21.10.2012 / 18:04

2 respostas

1

Eu acho que descobri. Depois de executar ssh -vT [email protected], percebi como minha chave não estava sendo incluída na lista de chaves que estavam sendo tentadas para autenticação:

debug1: Trying private key: /home/***/.ssh/id_rsa
debug1: Trying private key: /home/***/.ssh/id_dsa
debug1: Trying private key: /home/***/.ssh/id_ecdsa
debug1: No more authentication methods to try.

Eu percebi que, de alguma forma, eu precisava dizer ao ssh para usar minha chave específica quando conectava ao github.com. Eu adicionei uma entrada github no meu arquivo ~ / .ssh / config

Host github.com
    IdentityFile ~/.ssh/id_github.pub

Depois de fazer isso, o comando ssh e os comandos git push / pull solicitam minha senha no terminal e se conectam com sucesso. Eu ainda não sei porque quando o comando é executado a partir do desktop, a caixa de diálogo para a chave correta é exibida. Alguém sabe por que isso funciona?

Obrigado!

    
por Damian 21.10.2012 / 18:29
0

Se você quer empurrar / puxar para git em uma máquina que você está conectado via ssh, usando a versão ssh do protocolo git, você pode fazer isso de duas maneiras:

1) Não encaminhe o agente ( ssh -A ) ao conectar-se à máquina, e assegure-se de que a chave que você deseja usar esteja no host ao qual você está se conectando e ssh esteja procurando para isso. Você pode fazer isso com a opção IdentifyFile para um Host no arquivo de configuração ssh. Observe que você deve apontar para o arquivo de chave privada e não para o arquivo de chave pública.

2) Encaminhe o agente com ssh -A ao conectar ao host que você deseja usar git, e assegure-se de que a chave privada esteja disponível na máquina cliente de onde você está se conectando, e que o ssh possa encontrá-lo.

Para um pouco mais de segurança, você pode usar uma chave diferente de cada máquina e adicionar as chaves públicas para as chaves que você está usando para o github, para cada máquina, à sua conta do github. Dessa forma, se uma chave for comprometida, você só precisará substituí-la em um lugar, em vez de tentar ter certeza de ter as mesmas chaves em todos os lugares.

    
por dobey 21.10.2012 / 19:30