Published July 22, 2026, 9:51 p.m. by dwest
It was one of those bugs that smelled like a key problem.
GitLab wouldn’t let anyone in.
The usual suspects were all there. Bad permissions. Wrong SSH key. Corrupted agent. Somebody had even whispered “GPG” under their breath.
But something didn’t add up.
I interrogated the client first.
$ ssh-add -l
3072 SHA256:...
“Looks clean,” it said. Too clean. Then I questioned the server.
ssh_dispatch_run_fatal:
invalid argument [preauth]
That’s the kind of answer you get from a witness who knows exactly what happened but isn’t talking. Time to lean on the client a little harder.
$ ssh -vvv
expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed
Wait. Authentication hadn’t even started. My prime suspect had a perfect alibi. I needed to know what the two machines were whispering to each other before the lights went out.
kex: algorithm: sntrup761x25519-sha512@openssh.com
host key algorithm: ssh-ed25519
cipher: chacha20-poly1305@openssh.com
There they were. Three names that didn’t belong in a FIPS neighborhood. The irony? GitLab wasn’t running in FIPS mode. Ubuntu was. OpenSSH happily advertised modern algorithms. The crypto provider took one look at them and slammed the door.
Case closed.
HostKeyAlgorithms:
rsa-sha2-512
rsa-sha2-256
This change explicitly configures OpenSSH to use only FIPS-approved host keys, key exchange algorithms and ciphers on both ssh servers and clients. This only affects FIPS-enabled hosts since this is scoped only for the Colo CUI network. This only seemed to affect “some” users since it requires one of them to attempt to load an algorithm it did not understand:
SSH Client
debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
Connection closed by titanforge.galois.com port 22
CUI Desktop
systemd[500366]: Starting gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation)...
systemd[500366]: Listening on gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation).
systemd[500366]: Stopping gpg-agent-ssh.socket - GnuPG cryptographic agent (ssh-agent emulation)...
systemd[500366]: Closed gcr-ssh-agent.socket - GCR ssh-agent wrapper.
Gitlab-CUI/Titanforge
sshd[1791879]: ssh_dispatch_run_fatal: Connection from 10.10.101.134 port 22: invalid argument [preauth]
SSH key exchange (preauth), before user authentication, which suggestd that negotiated algorithms were incompatible with the host’s FIPS crypto policy.
This change overrides the sshd defaults for available Hostkeys, KexKeys and Ciphers by restricting them to only a specific list algorithms.
After applying these settings, SSH negotiation completed successfully and GitLab authentication proceeded normally. This change affects only SSH transport negotiation and does not change GitLab authentication, authorization or user SSH keys. It is also restricted to just the CUI network… for now.
There are no comments.