Estou tentando criar um repositório git em meu host da web e cloná-lo no meu computador. Aqui está o que eu fiz:
- Criei um repositório no servidor remoto.
- Eu gerado um par de chaves:
ssh-keygen -t dsa
. - Eu adicionei minha chave para ssh-agent.
- Copiei para a chave pública do servidor
~/.ssh
.
E então, após uma tentativa de executar o comando git clone ssh://user@host/path-to-repository
, recebo um erro:
Incapaz de negociar com XX.XXX.XX.XX: nenhum tipo de chave de host correspondente encontrado. Sua oferta: ssh-dss
fatal: não foi possível ler do repositório remoto.
Certifique-se de que possui os direitos de acesso corretos e de que o repositório existe.
O que isso significa?
ssh
web-hosting
Nikita Gorshkov
fonte
fonte
Respostas:
A versão recente do openssh tornou as chaves DSA obsoletas por padrão. Você deve sugerir ao seu provedor GIT para adicionar alguma chave de host razoável. Confiar apenas em DSA não é uma boa ideia.
Como alternativa, você precisa dizer ao seu
ssh
cliente que deseja aceitar as chaves de host DSA, conforme descrito na documentação oficial para uso legado . Você tem poucas possibilidades, mas recomendo adicionar estas linhas ao seu~/.ssh/config
arquivo:Outra possibilidade é usar a variável de ambiente
GIT_SSH
para especificar estas opções:fonte
HostkeyAlgorithms +ssh-dss
. Obrigado.Você também pode adicionar
-oHostKeyAlgorithms=+ssh-dss
em sua linha ssh:fonte
Para mim, funcionou: (adicionado em
.ssh\config
)fonte
yuor-host
é o hostssh
contra o qual você está executando . Definir um padrão não seguro para todos os hosts é sempre uma má ideia.Se você é como eu e prefere não tornar este sistema de falha de segurança ou para todo o usuário, você pode adicionar uma opção de configuração a qualquer repositório git que precise disso, executando este comando nesses repositórios. (observe que só funciona com a versão git> = 2.10, lançada em 04/09/2016)
No entanto, isso só funciona após a configuração do repo. Se você não se sentir confortável em adicionar um controle remoto manualmente (e quiser apenas clonar), execute o clone assim:
em seguida, execute o primeiro comando para torná-lo permanente.
Se você não tiver o mais recente e ainda quiser manter o buraco o mais local possível, recomendo colocar
em um arquivo em algum lugar, digamos
git_ssh_allow_dsa_keys.sh
, esource
instalá-lo quando necessário.fonte
Quero colaborar um pouco com a solução para o lado servidor. Então, o servidor está dizendo que não suporta DSA, isso ocorre porque o cliente openssh não o ativa por padrão :
Então, para consertar isso no lado do servidor, devo ativar outros algoritmos de chave como RSA ou ECDSA. Acabei de ter esse problema com um servidor em uma lan. Eu sugiro o seguinte:
Atualize o openssh:
Mesclar novas configurações no sshd_config se houver um sshd_config.rpmnew.
Verifique se há chaves de hosts em / etc / ssh /. Se não gerar novos, veja
man ssh-keygen
.Verifique em / etc / ssh / sshd_config a configuração do HostKey. Deve permitir a configuração de RSA e ECDSA. (Se todos eles forem comentados por padrão, também permitirá o RSA, veja na
man sshd_config
parte de HostKey).Para o lado do cliente, crie uma chave para ssh (não um DSA como na pergunta) apenas fazendo isto:
Depois disso, como há mais opções do que ssh-dss (DSA), o cliente openssh (> = v7) deve se conectar com RSA ou algoritmo melhor.
Aqui está outro bom artigo.
Esta é a minha primeira pergunta respondida, agradeço sugestões: D.
fonte
Como especificar vários algoritmos? Eu pergunto porque o git acabou de atualizar no meu laptop de trabalho (Windows 10, usando a compilação oficial do Git para Windows) e recebi este erro quando tentei enviar um branch de projeto para o meu Azure DevOps remoto. Tentei empurrar --set-upstream e consegui isso:
Então, como alguém implementaria as sugestões acima, permitindo ambos? (Como uma solução rápida, usei a solução de @golvok com group14 e funcionou, mas realmente não sei se 1 ou 14 é melhor, etc.)
fonte
Você pode seguir a abordagem acima ou esta
Crie o arquivo de configuração no diretório .ssh e inclua essas linhas.
fonte