Unable to negotiate with ip:22: no matching host key found – Code Example

Total
0
Shares

You get Unable to negotiate with ip port 22: no matching host key type found error when you try to authenticate on Github with SSH using ssh-rsa algorithm. ssh-rsa is insecure as it uses SHA-1 protocol. Even it is deprecated by openssh and they declared it in their press release.

Solution with Code Example

The best solution is to not use ssh-rsa as it is insecure and cryptographically not safe. There are better alternatives available like rsa-sha2-256 which uses SHA-256 protocol and rsa-sha2-512 which uses SHA-512 protocol.

But if you need to use ssh-rsa only (like Azure DevOps only support ssh-rsa) for connecting to the Github, GitLab, BitBucket etc. then you can add exception to the ssh config file –

Open .ssh/config file and add this –

.git/config
Host ssh.dev.azure.com
HostName ssh.dev.azure.com
User git
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
Host ssh.dev.azure.com HostName ssh.dev.azure.com User git IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes PubkeyAcceptedAlgorithms +ssh-rsa HostkeyAlgorithms +ssh-rsa
Host ssh.dev.azure.com
    HostName ssh.dev.azure.com
    User git
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

Another solution is to use HTTPS instead of ssh.