The built-in SSH server currently advertises a number of key exchange, MAC, and host key algorithms that are considered weak or broken. The defaults should be tightened so a fresh installation passes a baseline SSH security audit out of the box.
Running ssh-audit against a default deployment flags the following as fail:
ecdh-sha2-nistp256ecdh-sha2-nistp384ecdh-sha2-nistp521hmac-sha1ssh-rsadocker run -it --rm positronsecurity/ssh-audit -p 2222 gitea.local
Default deployments expose algorithms that are known-weak or deprecated upstream. The current workaround requires manually setting several GITEA__server__SSH_SERVER_* variables, which most users will never do.
[server]
SSH_SERVER_KEY_EXCHANGES = curve25519-sha256, diffie-hellman-group14-sha256
SSH_SERVER_CIPHERS = chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256
There is no exposed option to restrict host key algorithms, so ssh-rsa remains advertised.
SSH_SERVER_KEY_EXCHANGES, SSH_SERVER_CIPHERS, and SSH_SERVER_MACS updated to the secure list above.SSH_SERVER_HOST_KEY_ALGORITHMS option added, with a default that excludes ssh-rsa.ssh-audit against a fresh install reports no [fail] entries.{
"cwe_ids": [
"CWE-1188",
"CWE-327"
],
"github_reviewed": true,
"github_reviewed_at": "2026-04-22T20:37:21Z",
"nvd_published_at": null,
"severity": "MODERATE"
}