SSH: The Ultimate Cheat Sheet for Secure Connections

Generating SSH Keys

Thessh-keygencommand is a versatile tool for generating, managing, and converting authentication keys for SSH.

  • -t: Specifies the type of key to create. Options include rsa, dsa, ecdsa, ed25519, etc. The default it generates RSA keys, e.g., -t dsa.

  • -b: Specifies the number of bits in the key. For RSA keys, the default is 2048 bits, but you can increase it to 4096 bits for stronger security, e.g., -b 4096.

  • -C: Adds a comment to the key, which can be useful for identifying the key later, e.g., -C "youremail@example.com".

  • -f: Specifies the filename of the key file, e.g., -f ~/.ssh/id_rsa.

  • -p: for changing the passphrase.

  • -N: Provides a new passphrase for the key, e.g., -N "your_passphrase".

  • -P: Provides the old passphrase when changing the passphrase of an existing key, e.g., -P "old_passphrase".

  • -l: To find out the fingerprint of an SSH key.

  • -m: Specifies the key format, such as PEM or RFC4716, e.g., -m PEM.

Here’s an example command that generates an RSA key with 4096 bits, adds a comment, and saves it to a specified file:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa

Connecting to a Remote Server

You can use the command to connect to a remote server and open a shell session there.
ssh username@host

  • -i [file_path]: To specify the private key location.

  • -p [port]: Specify the port to connect to on the remote host.

  • -l [user]: Log in using the specified username.

  • [command]: Execute a command on the remote host.

  • -L [local_port:remote_host:remote_port]: Forward a local port to a remote address.

  • -R [remote_port:local_host:local_port]: Forward a remote port to a local address.

  • -N: which does not open a shell or execute a program on the remote side.

Here’s an example command for port forwording:
local(8888) => Remote(80) ssh -f -N -L 8888:remote_host:80 username@remote_host
Remote(8888) => Local(80)ssh -f -N -R 8888:loal_host:80 username@remote_host

Mastering SSH commands is essential for secure and efficient remote server connections. Generating robust SSH keys, utilizing port forwarding, and employing specific commands enhance security and streamline your workflow. This cheat sheet assists you in navigating SSH complexities to ensure secure connections and smooth operations.

0
Subscribe to my newsletter

Read articles from Deevanshu Kushwah directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Deevanshu Kushwah
Deevanshu Kushwah

Full-stack engineer with 3+ years of experience in writing and deploying production-ready code. Skilled in a variety of technologies and project environments, both in collaborative teams and solo. Passionate about crafting clean, maintainable code.