Como faço para desfazer um ssh-add em uma identidade encaminhada para acessar o github?

3

Atualmente estou tentando acessar o GitHub para clonar um repositório com SSH.

No entanto, quando eu insiro o URL para clonar, o servidor trava após Initialized empty Git repository in /export/home/nathan/myrepo , da seguinte maneira:

$ git clone [email protected]:v6/myrepo.git
Initialized empty Git repository in /export/home/nathan/myrepo/.git/

ssh-add -l mostra várias identidades.

2048 <fingerprint> /home/vagrant/.ssh/id_rsa (RSA)
2048 <fingerprint> production-infrastructure.pem (RSA)

Eu adicionei as chaves públicas para os dois itens acima à minha conta do GitHub.

No entanto, quando tento ssh -T [email protected] , obtenho algo como o seguinte:

Hi otheruser1998! You've successfully authenticated, but GitHub does not provide shell access.

Eu não sou otheruser1998 .

Acho que o GitHub pode associar a chave production-infrastructure.pem a otheruser1998 , cuja conta já possui essa chave.

Como desativo a tecla production-infrastructure.pem de ssh-agent ?

Se isso não funcionar, posso especificar uma chave para o git usar?

Como essas duas chaves são encaminhadas da minha máquina de desenvolvimento local, não posso simplesmente especificar meu arquivo de chave em ~/.ssh/config , como uma resposta popular para Como dizer ao git qual chave privada usar? recomenda.

Também não posso usar ssh-add -d production-infrastructure.pem para remover a chave, pois, novamente, é necessário especificar um caminho local para um arquivo de chave: link

O título da pergunta parece um pouco desajeitado. Por favor edite. Vou pegar qualquer ajuda que conseguir para deixar isso mais claro. No entanto, o objetivo final é acabar com a situação que me faz encontrar esse erro silencioso de git clone , clonar meu repositório e seguir em frente com a vida.

    
por Nathan Basanese 11.09.2015 / 19:48

1 resposta

0

Você poderia matar o ssh-agent, mas isso impediria que você recarregasse o production-infrastructure.pem (já que você não parece estar disponível localmente) depois que você terminar.

Como alternativa, você pode usar a variável de ambiente $ GIT_SSH para especificar o programa que o git deve usar para o ssh. Você precisa criar um novo script de shell com as duas linhas a seguir:

#!/bin/bash
ssh -i /home/vagrant/.ssh/id_rsa $*

Eu salvaria isso como ~ / bin / githubssh com o modo 555. (Isto é infelizmente necessário porque o git não faz análise de argumentos na variável de ambiente GIT_SSH, ele tenta colocar a coisa toda em argv [0] quando ela vai para executar o programa SSH.)

Então, quando for a hora de fazer o checkout:

$ GIT_SSH=~/bin/githubssh git clone [email protected]:v6/myrepo.git

Isto irá definir a variável de ambiente GIT_SSH apenas para o comando git.

    
por 07.10.2015 / 08:23