--> post-quantum key agreement
See also https://www.openssh.org/pq.html
OpenSSH has offered post-quantum key agreement (KexAlgorithms) by default since release 9.0 (April 2022), initially via the sntrup761x25519-sha512 algorithm. More recently, in OpenSSH 9.9, we have added a second post-quantum key agreement mlkem768x25519-sha256 and it was made the new default scheme in OpenSSH 10.0 (April 2025).
Debian 10 does not offer post-quantum security.
10.13
OpenSSH_7.9p1 Debian-10+deb10u4, OpenSSL 1.1.1n 15 Mar 2022
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1Debian 11 does not offer post-quantum security.
11.11
OpenSSH_8.4p1 Debian-5+deb11u5, OpenSSL 1.1.1w 11 Sep 2023
gssapikexalgorithms gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-group14-sha1-,gss-gex-sha1-
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256The first Debian Release with a post-quantum key agreement.
12.13
OpenSSH_9.2p1 Debian-2+deb12u7, OpenSSL 3.0.18 30 Sep 2025
gssapikexalgorithms gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-group14-sha1-,gss-gex-sha1-
ciphers chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
kexalgorithms sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256The second Debian Release with a second post-quantum key agreement added.
13.3
OpenSSH_10.0p2 Debian-7, OpenSSL 3.5.4 30 Sep 2025
gssapikexalgorithms gss-group14-sha256-,gss-group16-sha512-,gss-nistp256-sha256-,gss-curve25519-sha256-,gss-group14-sha1-,gss-gex-sha1-
ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr
kexalgorithms mlkem768x25519-sha256,sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521The script debian_10.sh used:
#!/usr/bin/env bash
set -euo pipefail
# Clean up any existing debian:10 image (optional but ensures a fresh start)
docker rmi -f debian:10 2>/dev/null || true
# Run the container and perform all the steps inside it
docker run -it --rm \
--platform linux/amd64 \
debian:10 \
bash -c '
set -euo pipefail
# ----- Switch APT to the archival mirrors
cat > /etc/apt/sources.list << EOF
deb http://archive.debian.org/debian buster main contrib non-free
deb http://archive.debian.org/debian-security buster/updates main contrib non-free
deb http://archive.debian.org/debian buster-updates main contrib non-free
EOF
# Disable the expired‑metadata check
echo "Acquire::Check-Valid-Until \"false\";" >/etc/apt/apt.conf.d/99no-check-valid-until
# ----- Update package index, install OpenSSH
apt-get update &>/dev/null
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends vim openssh-server &>/dev/null
# ----- Create the privilege‑separation runtime directory ------------------
mkdir -p /run/sshd && chmod 0755 /run/sshd
# ----- Show the default KexAlgorithms / Ciphers
echo "=== Default KexAlgorithms / Ciphers for Debian 10 ==="
cat /etc/debian_version
ssh -V
sshd -T | grep -Ei "kexalgorithms|ciphers"
# ----- Drop into an interactive shell ----------
echo ""
echo "=== You are now inside the container. Feel free to explore. ==="
exec /bin/bash
'
docker rmi -f debian:10 2>/dev/null || trueThe script debian_11_12_13.sh used:
#!/usr/bin/env bash
set -euo pipefail
# Choose the Debian version
# DEBIAN_VER="11"
# DEBIAN_VER="12"
# DEBIAN_VER="13"
read -rp "Enter the Debian version you want to use (11, 12, or 13): " DEBIAN_VER
if [[ ! "$DEBIAN_VER" =~ ^(11|12|13)$ ]]; then
echo "Invalid version. Please run the script again and choose 11, 12, or 13."
exit 1
fi
IMAGE_TAG="debian:${DEBIAN_VER}"
# Clean up any existing image (optional but ensures a fresh start)
docker rmi -f "$IMAGE_TAG" 2>/dev/null || true
# Run the container and perform all the steps inside it
docker run -it --rm \
--platform linux/amd64 \
"$IMAGE_TAG" \
bash -c 'set -euo pipefail
# ----- Update package index, install OpenSSH
apt-get update &>/dev/null
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends vim openssh-server &>/dev/null
# ----- Create the privilege-separation runtime directory
mkdir -p /run/sshd && chmod 0755 /run/sshd
# ----- Show the default KexAlgorithms / Ciphers
echo "=== Default KexAlgorithms / Ciphers for Debian '"'"${DEBIAN_VER}"'"' ==="
cat /etc/debian_version
ssh -V
sshd -T | grep -Ei "kexalgorithms|ciphers"
# ----- Drop into an interactive shell ----------
echo ""
echo "=== You are now inside the container. Feel free to explore. ==="
exec /bin/bash
'
# Optional clean‑up of the image after you exit the container
docker rmi -f "$IMAGE_TAG" 2>/dev/null || true