J'essaie de créer un référentiel git sur mon hôte Web et de le cloner sur mon ordinateur. Voici ce que j'ai fait:
- J'ai créé un référentiel sur le serveur distant.
- Je généré une paire de clés:
ssh-keygen -t dsa
. - J'ai ajouté ma clé à ssh-agent.
- J'ai copié sur la clé publique du serveur dans
~/.ssh
.
Et puis, après une tentative d'exécuter la commande git clone ssh://user@host/path-to-repository
, j'obtiens une erreur:
Impossible de négocier avec XX.XXX.XX.XX: aucun type de clé d'hôte correspondant n'a été trouvé. Leur offre: ssh-dss
fatal: impossible de lire à partir du référentiel distant.
Veuillez vous assurer que vous disposez des droits d'accès appropriés et que le référentiel existe.
Qu'est-ce que ça veut dire?
ssh
web-hosting
Nikita Gorshkov
la source
la source
Réponses:
Les clés DSA obsolètes par défaut dans la version récente d'OpenSh Vous devriez suggérer à votre fournisseur GIT d'ajouter une clé d'hôte raisonnable. Se fier uniquement à DSA n'est pas une bonne idée.
Pour contourner ce problème, vous devez indiquer à votre
ssh
client que vous souhaitez accepter les clés d'hôte DSA, comme décrit dans la documentation officielle pour l'utilisation héritée . Vous avez peu de possibilités, mais je recommande d'ajouter ces lignes dans votre~/.ssh/config
fichier:Une autre possibilité est d'utiliser la variable d'environnement
GIT_SSH
pour spécifier ces options:la source
HostkeyAlgorithms +ssh-dss
. Merci.Vous pouvez également ajouter
-oHostKeyAlgorithms=+ssh-dss
dans votre ligne ssh:la source
Pour moi, cela a fonctionné: (ajouté dans
.ssh\config
)la source
yuor-host
c'est l'hôtessh
contre lequel vous exécutez . Définir une valeur par défaut non sûre pour tous les hôtes est toujours une mauvaise idée.Si vous êtes comme moi et que vous préférez ne pas créer ce système de failles de sécurité ou à l'échelle de l'utilisateur, vous pouvez ajouter une option de configuration à tous les dépôts git qui en ont besoin en exécutant cette commande dans ces dépôts. (note ne fonctionne qu'avec la version git> = 2.10, publiée le 04/09/2016)
Cependant, cela ne fonctionne qu'une fois le dépôt configuré. Si vous n'êtes pas à l'aise d'ajouter manuellement une télécommande (et que vous voulez simplement cloner), vous pouvez exécuter le clone comme ceci:
puis exécutez la première commande pour le rendre permanent.
Si vous n'avez pas la dernière version et que vous souhaitez toujours garder le trou aussi local que possible, je vous recommande de mettre
dans un fichier quelque part, par exemple
git_ssh_allow_dsa_keys.sh
, etsource
si nécessaire.la source
Je souhaite collaborer un peu avec la solution côté serveur. Donc, le serveur dit qu'il ne prend pas en charge DSA, c'est parce que le client openssh ne l'active pas par défaut :
Donc, pour résoudre ce problème du côté serveur, je devrais activer d'autres algorithmes clés tels que RSA ou ECDSA. Je viens d'avoir ce problème avec un serveur dans un réseau local. Je suggère ce qui suit:
Mettez à jour l'openssh:
Fusionner les nouvelles configurations dans sshd_config s'il existe un sshd_config.rpmnew.
Vérifiez qu'il existe des clés d'hôtes dans / etc / ssh /. Sinon, en générer de nouveaux, voir
man ssh-keygen
.Vérifiez dans le fichier / etc / ssh / sshd_config la configuration HostKey. Il doit permettre la configuration de RSA et ECDSA. (Si tous sont commentés par défaut cela autorisera aussi le RSA, voir dans
man sshd_config
la partie HostKey).Pour le côté client, créez une clé pour ssh (pas un DSA comme dans la question) en faisant simplement ceci:
Après cela, comme il y a plus d'options que ssh-dss (DSA), le client openssh (> = v7) doit se connecter avec RSA ou un algorithme supérieur.
Voici un autre bon article.
C'est ma première question répondue, je salue les suggestions: D.
la source
Comment spécifier plusieurs algorithmes? Je demande parce que git vient de se mettre à jour sur mon ordinateur portable de travail (Windows 10, en utilisant la version officielle de Git pour Windows) et j'ai eu cette erreur lorsque j'ai essayé de pousser une branche de projet sur ma télécommande Azure DevOps. J'ai essayé de pousser --set-upstream et j'ai obtenu ceci:
Alors, comment mettre en œuvre les suggestions ci-dessus en tenant compte des deux? (Pour faire vite, j'ai utilisé la solution de @ golvok avec group14 et cela a fonctionné, mais je ne sais vraiment pas si 1 ou 14 est meilleur, etc.)
la source
Vous suivez l'approche ci-dessus ou celle-ci
Créez le fichier de configuration dans le répertoire .ssh et ajoutez ces lignes.
la source