Unable to negotiate with 203.0.113.10 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Client and server share no key exchange algorithm
Seen in OpenSSH client connecting to old servers, routers, switches and embedded devices
The server only offers key exchange algorithms that your SSH client has disabled as weak.
Common causes
- The device or server is old and only supports diffie-hellman-group1-sha1 or group14-sha1.
- The client or server has a hardened KexAlgorithms list with no overlap.
How to fix it
- Upgrade the server firmware or OpenSSH so it supports a modern algorithm (curve25519-sha256).
- As a per-host workaround, enable exactly what it offers: ssh -o KexAlgorithms=+diffie-hellman-group14-sha1 user@host, or the same line under a Host block.
- Avoid adding weak algorithms globally in ssh_config.
Got a different message? Paste it into the error explainer.
Related errors
- error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 · The push is larger than the server or proxy accepts
- error: RPC failed; curl 18 transfer closed with outstanding read data remaining · The connection dropped during a git transfer
- fatal: the remote end hung up unexpectedly · The Git server closed the connection
- kex_exchange_identification: Connection closed by remote host · The SSH server closed the connection before the handshake
- Permission denied (publickey) · The server rejected every SSH key you offered
- Host key verification failed. · SSH couldn't confirm the server's identity
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! · The server's SSH host key is different from last time
- Unable to negotiate with 203.0.113.10 port 22: no matching host key type found. Their offer: ssh-rsa · The server only offers an old host key type
- Received disconnect from 203.0.113.10 port 22:2: Too many authentication failures · The client offered too many keys before the right one
- Connection closed by 203.0.113.10 port 22 · The SSH server ended the session
- npm ERR! code ETIMEDOUT · npm couldn't reach the registry in time
- npm ERR! code ERR_SOCKET_TIMEOUT · The registry connection went silent