Clé SSH RSA : résoudre l'erreur "Unable to negotiate with XX.XX.XX.X port 22: no matching host key type found"

La plateforme Azure DevOps de Microsoft fournit aux entreprises un ensemble d'outils pour intégrer et gérer efficacement ses codes et tâches. On peut gérer les différentes versions de son code, automatiser la construction et le déploiement, ou encore intégrer des services externes, comme Git. Si vous utilisez SSH pour communiquer avec une plateforme Azure DevOps, pour utiliser par exemple Git, vous allez avoir comme message "Unable to negotiate with XX.XX.XX.X port 22: no matching host key type found". Ce message est dû à un souci de protocole.

Bien qu'Azure DevOps soit une solution très moderne embarquant des technologies récentes, le protocole SSH n'est pas géré avec des solutions récentes. Actuellement, seul le protocole de sécurité "ssh-rsa" est accepté par cette plateforme. Ce protocole est maintenant considéré comme faible du point de vue de la sécurité. On utilise maintenant des protocoles plus sécurisés, comme "rsa-sha-256" ou " rsa-sha-512". Si vous le pouvez, utilisez des solutions plus sécurisées, comme HTTPS, ou des plateformes pour héberger votre code, comme GitLab ou GitHub. Elles supportent des protocoles de communication plus sécurisés pour communiquer avec Azure DevOps.

Si vous souhaitez malgré tout utiliser SSH, il existe une solution permettant de contourner le message d'erreur. Vous devez modifier le fichier de configuration "~/.ssh/config". Ajoutez les lignes suivantes pour pouvoir utiliser le protocole de sécurité "ssh-rsa" avec Git. Cette solution a des risques de sécurité.

Host ssh.dev.azure.com
    User git
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

Divers