Ssh-keygen

Last updated
ssh-keygen
Developer The OpenBSD Project
Repository github.com/openssh/openssh-portable/
Written in C
Operating system Unix, Unix-like, Microsoft Windows
Type Command
License BSD, ISC, public domain
Website www.openssh.com

ssh-keygen is a standard component of the Secure Shell (SSH) protocol suite found on Unix, Unix-like and Microsoft Windows computer systems used to establish secure shell sessions between remote computers over insecure networks, through the use of various cryptographic techniques. The ssh-keygen utility is used to generate, manage, and convert authentication keys.

Contents

Overview

ssh-keygen is able to generate a key using one of three different digital signature algorithms. With the help of the ssh-keygen tool, a user can create passphrase keys for any of these key types. To provide for unattended operation, the passphrase can be left empty, albeit at increased risk. These keys differ from keys used by the related tool GNU Privacy Guard.

OpenSSH-based client and server programs have been included in Windows 10 since version 1803. The SSH client and key agent are enabled and available by default and the SSH server is an optional Feature-on-Demand. [1] [2]

Key formats supported

Example: ssh-keygen -t rsa [3]

Protocol-t optionCreation DateStatus in 2025
RSArsa1977Universally supported among SSH clients
DSAdsa1991Deprecated in 2013 [4]
ECDSAecdsa1999Vulnerable [5]
EDDSAed255192005Performs faster than RSA with significantly smaller keys [6]

Originally, with SSH protocol version 1 (now deprecated) only the RSA algorithm was supported. As of 2016, RSA is still considered strong, but the recommended key length has increased over time.

The SSH protocol version 2 additionally introduced support for the DSA algorithm. DSA is now considered weak and was disabled in OpenSSH 7.0.

Subsequently, OpenSSH added support for a third digital signature algorithm, ECDSA (this key format no longer uses the previous PEM file format for private keys, nor does it depend upon the OpenSSL library to provide the cryptographic implementation).

A fourth format is supported using Ed25519, originally developed by independent cryptography researcher Daniel J. Bernstein.

Command syntax

The syntax of the ssh-keygen command is as follows:

ssh-keygen [options]

Some important options of the ssh-keygen command are as follows:

ssh-keygen command optionsdescription
-b bitsSpecifies the number of bits in the key to create. The default length is 3072 bits (RSA) or 256 bits (ECDSA).
-C commentProvides custom key comment (which will be appended at the end of the public key).
-KImports a private resident key from a FIDO2 device.
-pRequests changing the passphrase of a private key file instead of creating a new private key.
-tSpecifies the type of key to create (e.g., rsa).
-oUse the new OpenSSH format.
-qquiets ssh-keygen. It is used by the /etc/rc file while creating a new key.
-NProvides a new Passphrase.
-BDumps the key's fingerprint in Bubble Babble format.
-lDumps the key's fingerprint in SHA-2 (or MD5) format.

Files used by the ssh-keygen utility

The ssh-keygen utility generates files for storing public and private keys. Note : they are stored in $HOME/.ssh/ as follows:

SSH protocol version 2

Quick Recap
AlgorithmPrivatePublic
RSAid_rsaid_rsa.pub
DSAid_dsaid_dsa.pub
ECDSAid_ecdsaid_ecdsa.pub
ed25519id_ed25519id_ed25519.pub

SSH protocol version 1

References

  1. "What's new for the Command Line in Windows 10 version 1803". 8 March 2018. Archived from the original on 25 May 2019. Retrieved 25 May 2019.
  2. "Using the OpenSSH Beta in Windows 10 Fall Creators Update and Windows Server 1709". 15 December 2017. Archived from the original on 25 May 2019. Retrieved 25 May 2019.
  3. "SSH-keygen(1) - Linux manual page".
  4. "Withdrawn NIST Technical Series Publication" (PDF). nvlpubs.nist.gov. Archived (PDF) from the original on 2024-08-17. Retrieved 2024-07-30.
  5. "How Hackers Can Exploit Weak ECDSA Signatures". 26 July 2021. Archived from the original on 30 July 2024. Retrieved 30 July 2024.
  6. "Comparing SSH Keys - RSA, DSA, ECDSA, or EdDSA?".