Digamos que seu .ssh
diretório contenha 30 chaves (15 privadas e 15 públicas).
Onde no Git se pode verificar qual é usado para se conectar a um determinado repositório remoto?
Digamos que seu .ssh
diretório contenha 30 chaves (15 privadas e 15 públicas).
Onde no Git se pode verificar qual é usado para se conectar a um determinado repositório remoto?
Respostas:
A seguinte entrada no .ssh/config
arquivo resolve o problema
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Onde ~/.ssh/whatever
está um caminho para sua chave privada
Além disso, o usuário e o host podem ser obtidos em
git push git@git.assembla.com:repo_name.git
^__ ^_______________
user host
Executar ssh no modo verbose, também conhecido como ssh -v user@host
, imprimirá uma grande carga de informações de depuração, que também contém detalhes sobre quais arquivos-chave ele está tentando fazer login.
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Agora, se você combinar isso, com o Passo 4 na própria página de ajuda SSH do Git , ssh -vT git@github.com
pode dar a resposta.
Nota: Você também pode usar a -i
opção para informar ao ssh durante a execução do comando, qual arquivo-chave usar.
ssh -vv user@host 2> >(grep Offering)
- isso tornará as coisas mais fáceis. O último arquivo deve ser a chave pública. Por exemplo:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
github
não é a mesma coisa que git
.
A menos que seja especificado no, .ssh/config
ele usará o arquivo de chave privada padrão.
O arquivo padrão é ~/.ssh/id_rsa
ou ~/.ssh/id_dsa
ou ~/.ssh/identity
dependendo da versão do protocolo.
Eu diria que mais prático para o meu gosto seria:
GIT_SSH_COMMAND='ssh -v' git …
é claro, dependendo das circunstâncias, pode ser benéfico apenas exportá-lo para o ambiente SHELL atual para que você não tenha que anexá-lo manualmente a cada vez. Então seria assim:
export GIT_SSH_COMMAND='ssh -v'
git …
- Como man git
sugere, existem algumas variáveis ambientais que afetariam as operações do Git com o uso de SSH. De acordo com man ssh
você pode obter algumas informações de depuração ao implantar a -v
opção (não apenas, mas também, verifique o manual se estiver curioso para saber mais).
qual chave é usada?
Na saída, você veria algo como ...
debug1: Offering public key: …
... que é a resposta ao seu qn.
set GIT_SSH_COMMAND=ssh -v
. Isso me ajudou a descobrir que o ssh-config Inlcude-Path deve ser algo assim no windows: Include /C/Users/YourUserName.ssh/config
para fazer o ssh e, portanto, o git usar um arquivo de configuração que usa, por exemplo, uma HOST *
entrada para especificar o arquivo de identidade que git / ssh usa.
Uma vez que git
usa apenas ssh
para se conectar, ele usará qualquer chave ssh
que for usada para se conectar ao host remoto. Consulte o ~/.ssh/config
arquivo para obter detalhes; o host
bloco usa a IdentityFile
diretiva para especificar a chave privada a ser usada. A página de ssh_config(5)
manual contém todos os detalhes.
/etc/ssh/ssh_config
/etc/ssh_config
que parece ser um arquivo cheio de entradas comentadas
~/.ssh/config
você mesmo.
Isso pode ser super avançado, mas depois de executar ssh -vT git@github.com
ele me mostrou que estava verificando /root/.ssh
as chaves, eu esperava que ele verificasse meu diretório inicial e então percebi que estava logado como root!
ssh
forma de interrogatório, são as soluções corretas. Obrigado.
No servidor remoto, edite o arquivo sshd_config e altere LogLevel de INFO para VERBOSE e reinicie o ssh.
Agora seu arquivo de log conterá a impressão digital da chave que foi usada para autenticar cada usuário.
No Ubuntu, esses arquivos são:
/etc/ssh/sshd_config
/var/log/auth.log
mas eles podem ser diferentes em outra distro. Apenas google para sua localização (alguns usam / var / log / secure por exemplo).