Post-quantum SSH, built for real deployments
Evaemon wraps OQS-OpenSSH with an interactive wizard, operational tooling, tests, and documentation. Run a separate sshd side-by-side. Enable hybrid compatibility. Prefer PQ algorithms with safe fallbacks.
git clone https://github.com/Yarpii/Evaemon.git
cd Evaemon
sudo bash wizard.sh
The wizard builds OQS-OpenSSH, configures a separate sshd, and sets up client tooling — without touching system OpenSSH.
Transparent scope. Explicit caveats. Designed for repeatable deployment.
Built for deployment, operations, and verification — not demos.
Runs a separate sshd process. System OpenSSH remains untouched.
NIST-selected and candidate signature schemes for host and client keys.
Prefer Kyber-based hybrid KEX for session encryption; append classical KEX as fallback.
Serve classical (Ed25519/RSA) and PQ keys side-by-side for compatibility.
Generate and advertise multiple host key types; clients negotiate what they support.
Retry-with-backoff on TCP checks, handshakes, and rotation verification.
A side-by-side deployment that keeps your existing OpenSSH intact.
Compile liboqs + OQS-OpenSSH under build/ without touching system binaries.
Configure evaemon-sshd as a parallel service with its own config + keys.
Use health checks, monitoring, diagnostics, and tests to validate end-to-end behavior.
Choose PQ-only for strict posture, or Hybrid for interoperability with standard OpenSSH clients while still preferring PQ algorithms.
Server + client setup, built around the wizard — with direct CLI equivalents.
Linux + build toolchain. Root access required for server-side operations.
# Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y git cmake ninja-build gcc make \
libssl-dev zlib1g-dev autoconf automake libtool pkg-config
Fetch + compile liboqs and OQS-OpenSSH under build/.
sudo bash build_oqs_openssh.sh
build/bin/ssh -V
Wizard → Server mode → configure host keys, sshd_config, systemd service.
sudo bash wizard.sh
# Select: 1 (Server) → Configure Server
sudo systemctl start evaemon-sshd.service
sudo systemctl status evaemon-sshd.service
Wizard → Client mode → keygen → copy key → connect (PQ-only or hybrid).
sudo bash wizard.sh
# Select: 2 (Client) → Generate Keys → Copy Key → Connect
Setting KexAlgorithms ensures the session key exchange is post-quantum-resistant too — not just the authentication step. client/connect.sh configures this automatically.
Wizard-driven workflows, with standalone tools for automation.
Generate keys, connect, health check, rotate, monitor.
bash client/keygen.sh
bash client/connect.sh
bash client/health_check.sh
bash client/key_rotation.sh
sudo bash server/monitoring.sh
Prefer PQ KEX and host keys, append classical fallbacks for interoperability.
build/bin/ssh \
-o "KexAlgorithms=ecdh-nistp384-kyber-1024r3-sha384-d00@openquantumsafe.org,...,curve25519-sha256" \
-o "HostKeyAlgorithms=ssh-falcon1024,ssh-ed25519,rsa-sha2-512,rsa-sha2-256" \
-o "PubkeyAcceptedKeyTypes=ssh-falcon1024,ssh-ed25519,rsa-sha2-512,rsa-sha2-256" \
-i ~/.ssh/id_ssh-falcon1024 \
-p 22 user@server
Threat model, best practices, and known limitations — documented plainly.
Self-contained bash harness with unit + integration coverage.
bash shared/tests/unit_tests/test_validation.sh
bash shared/tests/unit_tests/test_logging.sh
bash shared/tests/unit_tests/test_functions.sh
bash shared/tests/unit_tests/test_backup.sh
bash shared/tests/unit_tests/test_copy_key.sh
bash shared/tests/unit_tests/test_connect.sh
bash shared/tests/integration_tests/test_keygen.sh
bash shared/tests/integration_tests/test_server.sh
bash shared/tests/integration_tests/test_key_rotation.sh
Full suite: 199 tests, exits 0 on success.
Short answers to the questions people ask first.
No. It runs a separate sshd process so your system OpenSSH is not modified.
Yes. Client connections can set KexAlgorithms to prefer Kyber-based post-quantum/hybrid KEX. client/connect.sh configures this automatically.
No. OQS/liboqs is not yet FIPS-validated; see the security guide for details.
Yes in hybrid mode (with classical fallbacks). Use PQ-only mode to enforce strict posture.