Como 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 insiro o URL para clonar, o servidor trava depois Initialized empty Git repository in /export/home/nathan/myrepo, da seguinte maneira:

$ git clone git@github.com: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)

Adicionei as chaves públicas das duas opções acima à minha conta do GitHub.

No entanto, quando tento ssh -T git@github.com, recebo algo como o seguinte:

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

Eu não sou otheruser1998.

Eu acho que o GitHub pode associar a production-infrastructure.pemchave otheruser1998, cuja conta já possui essa chave.

Como desativo a production-infrastructure.pemchave 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 apenas especificar meu arquivo de chave ~/.ssh/config, como uma resposta popular a Como saber ao git qual chave privada usar? recomenda.

Também não posso usar ssh-add -d production-infrastructure.pempara remover a chave, pois, novamente, é necessário especificar o caminho local para um arquivo de chaves: http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/ ssh-add.1

O título da pergunta parece um pouco desajeitado. Por favor edite. Vou levar qualquer ajuda possível para torná-lo mais claro. No entanto, o objetivo final é encerrar a situação que me leva a encontrar esse git clonebug silencioso , clonar meu repositório e seguir em frente com vida.


Nenhum dos principais arquivos (aquele que você deseja usar e o enganoso) não está disponível na máquina em que você executa o comando? Se você puder disponibilizar a chave certa localmente, acredito que superuser.com/a/868699/29509 (opção ssh-agent) deve ajudar.
Piotr Findeisen 31/03

Respostas:


0

Você pode matar o ssh-agent, mas isso impediria que você recarregasse o production-infrastructure.pem (já que você parece não tê-lo disponível localmente) depois que 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. (Isso é infelizmente necessário porque o git não faz análise de argumento na variável de ambiente GIT_SSH, ele tenta inserir a coisa toda no argv [0] quando executa o Programa SSH.)

Então, quando é hora de fazer o checkout:

$ GIT_SSH=~/bin/githubssh git clone git@github.com:v6/myrepo.git

Isso definirá a variável de ambiente GIT_SSH apenas para esse comando git.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.