Quem votou para "fechar" esta questão - está diretamente relacionada à programação pela mesma razão que as perguntas sobre GIT são permitidas aqui
James Raitsev
1
Indiscutivelmente ... Esta é realmente uma questão de superusuário, o problema aqui não é o git, mas a plataforma em que ele está sendo executado. Você não pode verificar o problema "no git", porque o git não se importa, ele se refere apenas a como você usa o ssh e como ele está configurado. Você usa ssh-agent, qualquer tipo de sistema de gerenciamento de chaves, qual sistema operacional você usa, qual versão, etc.?
Arafangion
Respostas:
72
A seguinte entrada no .ssh/configarquivo resolve o problema
host git.assembla.com
user git
identityfile ~/.ssh/whatever
Onde ~/.ssh/whateverestá um caminho para sua chave privada
Além disso, o usuário e o host podem ser obtidos em
git push [email protected]:repo_name.git
^__ ^_______________
user host
então se eu quisesse usar outra chave ssh para um host diferente, eu simplesmente repetiria a mesma depois da primeira ?? O arquivo de identidade pertence ao primeiro host antes dele?
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).
Você também pode executar o grep na saída de erro padrão do comando ssh para encontrar o arquivo de chave como este: 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
Gianfranco P.
4
githubnão é a mesma coisa que git.
ForeverWintr
9
A menos que seja especificado no, .ssh/configele usará o arquivo de chave privada padrão.
O arquivo padrão é ~/.ssh/id_rsaou ~/.ssh/id_dsaou ~/.ssh/identitydependendo da versão do protocolo.
Quando as chaves são adicionadas a hosts conhecidos?
mountainLion
8
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 gitsugere, existem algumas variáveis ambientais que afetariam as operações do Git com o uso de SSH. De acordo com man sshvocê pode obter algumas informações de depuração ao implantar a -vopção (não apenas, mas também, verifique o manual se estiver curioso para saber mais).
SIM. Esta deve ser a resposta aceita. Para fazê-lo funcionar em janelas CMD (ugh), use: 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/configpara 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.
icyerasor
6
Uma vez que gitusa apenas sshpara se conectar, ele usará qualquer chave sshque for usada para se conectar ao host remoto. Consulte o ~/.ssh/configarquivo para obter detalhes; o hostbloco usa a IdentityFilediretiva para especificar a chave privada a ser usada. A página de ssh_config(5)manual contém todos os detalhes.
Hmm .. o arquivo não existe no meu sistema. Deveria?
James Raitsev
1
@JAM Qual sistema operacional você está usando? Além disso, às vezes o arquivo de configuração está em/etc/ssh/ssh_config
Estou no MACOS. Encontrado, o /etc/ssh_configque parece ser um arquivo cheio de entradas comentadas
James Raitsev
@sarnold Você pode criar ~/.ssh/configvocê mesmo.
xdazz
4
Isso pode ser super avançado, mas depois de executar ssh -vT [email protected]ele me mostrou que estava verificando /root/.sshas chaves, eu esperava que ele verificasse meu diretório inicial e então percebi que estava logado como root!
Respostas:
A seguinte entrada no
.ssh/config
arquivo resolve o problemaOnde
~/.ssh/whatever
está um caminho para sua chave privadaAlém disso, o usuário e o host podem ser obtidos em
fonte
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.Agora, se você combinar isso, com o Passo 4 na própria página de ajuda SSH do Git ,
ssh -vT [email protected]
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.fonte
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 quegit
.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.fonte
Eu diria que mais prático para o meu gosto seria:
é 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:
- Como
man git
sugere, existem algumas variáveis ambientais que afetariam as operações do Git com o uso de SSH. De acordo comman 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).Na saída, você veria algo como ...
... que é a resposta ao seu qn.
fonte
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, umaHOST *
entrada para especificar o arquivo de identidade que git / ssh usa.Uma vez que
git
usa apenasssh
para se conectar, ele usará qualquer chavessh
que for usada para se conectar ao host remoto. Consulte o~/.ssh/config
arquivo para obter detalhes; ohost
bloco usa aIdentityFile
diretiva para especificar a chave privada a ser usada. A página dessh_config(5)
manual contém todos os detalhes.fonte
/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 [email protected]
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!fonte
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:
mas eles podem ser diferentes em outra distro. Apenas google para sua localização (alguns usam / var / log / secure por exemplo).
fonte