Estou tentando conectar-me a um repositório Git remoto que reside no meu servidor web e cloná-lo na minha máquina.
Estou usando o seguinte formato para o meu comando:
git clone ssh://[email protected]/repository.git
Isso funcionou bem para a maioria dos membros da minha equipe. Geralmente, depois de executar este comando, o Git solicita a senha do usuário e, em seguida, executa a clonagem. No entanto, ao executar em uma das minhas máquinas, recebo o seguinte erro:
Falha na verificação da chave do host.
fatal: Não foi possível ler do repositório remoto.
Não estamos usando chaves SSH para conectar-se a este repositório, por isso não sei por que o Git está procurando uma nessa máquina específica.
ssh://
Respostas:
Você está se conectando através do protocolo SSH, conforme indicado pelo
ssh://
prefixo no URL do seu clone. Usando o SSH, todo host possui uma chave. Os clientes lembram-se da chave do host associada a um endereço específico e recusam-se a conectar-se se uma chave do host parecer mudar. Isso evita ataques do homem no meio.A chave do host para domain.com foi alterada. Se isso não lhe parecer suspeito , remova a chave antiga do cache local editando
${HOME}/.ssh/known_hosts
para remover a linha de domain.com ou permitindo que um utilitário SSH faça isso por você comA partir daqui, registre a chave atualizada, fazendo você mesmo com
ou, de forma equivalente, vamos
ssh
fazer isso por você na próxima vez que você se conectar comgit fetch
,git pull
ougit push
(ou mesmo um simples ol'ssh domain.com
), respondendo sim quando for solicitadoA razão para esse prompt é domain.com não está mais no seu
known_hosts
depois de excluí-lo e, presumivelmente, não está no sistema/etc/ssh/ssh_known_hosts
, portantossh
, não há como saber se o host do outro lado da conexão é realmente domain.com. (Se a chave errada estiver/etc
inserida, alguém com privilégios administrativos precisará atualizar o arquivo em todo o sistema.)É altamente recomendável que você também tenha usuários autenticados com chaves. Dessa forma,
ssh-agent
pode armazenar material de chave por conveniência (em vez de todos terem que digitar sua senha para cada conexão com o servidor), e as senhas não passam pela rede.fonte
sudo ssh-keygen -R domain.com
pode renomear seuknown_hosts
arquivo existenteknown_hosts.old
e criar uma cópia que seja legível apenas pela raiz . (-rw------- root root
) Você pode facilmentechown
voltar para o usuário apropriado, mas também pode perder uma tarde depurando por que o git está quebrado. : DAre you sure you want to continue connecting (yes/no)?
. Não cometa o mesmo erro que eu. Você precisa digitaryes
. Simplesmente pressionar enter não seleciona sim por padrãoComo eu respondi anteriormente em Cloning, o git repo causa erro - a verificação da chave do host falhou. fatal: A extremidade remota desligou inesperadamente , adicione o GitHub à lista de hosts autorizados:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
fonte
Eu tive o problema semelhante, mas usando as chaves SSH. Da resposta de Tupy, acima, eu descobri que o problema é que o arquivo known_hosts não está presente ou o github.com não está presente na lista de hosts conhecidos. Aqui estão as etapas que segui para resolvê-lo -
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keygen -t rsa -C "user.email"
$ cat ~/.ssh/id_rsa.pub
e copie-o.fonte
touch
comando falharia caso o~/.ssh
diretório não existisse, portanto a etapa 1 ainda era necessária. Além disso, você não precisatouch
do arquivo antes de usar o>>
redirecionamento. Ele será criado se necessário (mas apenas o arquivo, não o caminho inteiro, aindamkdir -p
é necessário). A-p
opção faz com que funcione caso o diretório já exista.ssh-keyscan
que falta nos documentos do Github para adicionar uma nova chave ssh.Dockerfile
a falta de permissão. A adição do segundo passo aqui corrigiu esse problema! Obrigado pelo excelente trabalhoIsso está acontecendo porque o github não está atualmente em seus hosts conhecidos.
Você deve ser solicitado a adicionar o github aos seus hosts conhecidos. Se isso não aconteceu, você pode executar
ssh -T [email protected]
para receber o prompt novamente.fonte
Para mim, bastava digitar "yes" no prompt que pergunta "Tem certeza de que deseja continuar se conectando (yes / no)?" ao invés de pressionar Enter.
fonte
Eu tive o mesmo problema em um sistema recém-instalado, mas este era um problema do udev. Não havia
/dev/tty
nó, então eu tive que fazer:fonte
Se você estiver na intranet do escritório (caso contrário, perigosa), sempre protegida por firewalls, basta ter as seguintes linhas em ~ / .ssh / config
Host *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
fonte
O que funcionou para mim foi primeiro adicionar minha chave SSH do novo computador, segui estas instruções do GitLab - adicionar chave SSH . Observe que, como estou no Win10, tive que executar todos esses comandos no Git Bash no Windows (não funcionou no cmd comum do DOS).
Então, novamente, no Git Bash, tive que fazer um
git clone
repo com o qual tive problemas e, no meu caso, tive que cloná-lo para um nome diferente, pois já o tinha localmente e não queria perder meus compromissos. Por exemploEntão eu recebi o prompt para adicioná-lo à lista de hosts conhecidos, a pergunta pode ser esta:
Eu digitei "yes" e finalmente funcionou, você normalmente deve receber uma mensagem semelhante a esta:
Nota : se você estiver no Windows, certifique-se de usar o Git Bash para todos os comandos; isso não funcionou no cmd shell ou no PowerShell, eu realmente tive que fazer isso no Git Bash.
Por fim, apaguei o segundo repo clone (
myRepo2
no exemplo) e voltei ao meu primeiro repo e finalmente pude fazer todas as coisas do Git normalmente no meu editor favorito VSCode.fonte
Se você estiver usando o git para Windows.
O cliente da GUI adiciona a chave para você
~/.ssh/known_hosts
. É mais fácil lembrar se você não faz isso com frequência e evita a necessidade de usar a linha de comando git (as linhas de comando padrão do Windows não têm ossh-keyscan
executável.fonte
Quando o servidor remoto deseja se conectar ao repositório particular, ele será autenticado via ssh. Crie o par de chaves público-privado com ssh-keygen ou se você já possui a chave público-privada. copie e cole a chave pública nas Configurações do repositório particular.
YourPrivateRepo -> Configurações -> Implementar chaves -> Adicionar chave de implantação -> Colar a chave pública.
Agora, o servidor remoto poderá se conectar ao repositório particular.
NOTA: As chaves de implantação têm acesso apenas para a leitura do repositório. Precisa permitir explicitamente o acesso de gravação.
fonte
Isso significa que sua chave do host remoto foi alterada (pode ser a alteração da senha do host),
Seu terminal sugeriu executar este comando como usuário root
Você precisa remover esse nome de host da lista de hosts no seu PC / servidor. Copie esse comando sugerido e execute como um usuário root.
Tente novamente. Espero que funcione.
fonte
Quando perguntado:
Are you sure you want to continue connecting (yes/no)?
Digite yes como resposta
Foi assim que resolvi meu problema. Mas se você tentar apenas pressionar o botão Enter, não funcionará!
fonte
Você pode usar o seu "git url" no formato de URL 'https' no arquivo Jenkins ou onde quiser.
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
fonte
Eu estava enfrentando o mesmo erro no DockerFile durante o tempo de compilação, enquanto a imagem era pública. Fiz poucas modificações no Dockerfile.
fonte
Eu tive o problema semelhante, infelizmente, usei a HMI do GitExtensions e esqueci que escrevi uma senha. Com HMI .... esqueça! Não digite a senha quando você gerar sua chave!
fonte
Recebi esta mensagem quando tentei
git clone
um repositório que não era meu. A solução foi bifurcar e depois clonar.fonte