2 min read

Using SSH Keys for Secure Authentication on macOS Tahoe

Secure Shell (SSH) keys provide a more secure way of logging into a server with SSH than using a password alone. While a password can eventually be cracked with a brute force attack, SSH keys are nearly impossible to decipher by brute force alone.

Checking for Existing Keys

Before generating a new key, check if you already have one.

  1. Open Terminal.
  2. List the files in your .ssh directory:
ls -al ~/.ssh

Look for files named id_rsa.pub, id_ecdsa.pub, or id_ed25519.pub. If you don't have one, you need to generate it.

Generating a New SSH Key

macOS Tahoe supports the modern Ed25519 algorithm, which is secure and fast.

  1. Run the generation command:
ssh-keygen -t ed25519 -C "your_email@example.com"
  1. File Location: Press Enter to accept the default file location.
  2. Passphrase: It is highly recommended to enter a secure passphrase. This adds an extra layer of security if your computer is compromised.

Adding Your Key to the ssh-agent

The ssh-agent manages your keys so you don't have to type your passphrase every time you use them.

  1. Start the agent in the background:
eval "$(ssh-agent -s)"
  1. Modify your ~/.ssh/config file to automatically load keys into the agent and store passphrases in your keychain.
    • Check if the config file exists: open ~/.ssh/config
    • If not, create it: touch ~/.ssh/config
    • Add the following lines:
Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
  1. Add your private key to the agent:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Copying the Public Key

To use your key, you need to place the public portion on the server (or service like GitHub/GitLab) you want to access.

Never share your private key (id_ed25519). Only share the public key (id_ed25519.pub).

To copy the public key to your clipboard:

pbcopy < ~/.ssh/id_ed25519.pub

Testing the Connection

Once you have added your public key to the remote server (usually in ~/.ssh/authorized_keys), test the connection:

ssh user@remotehost.com

If set up correctly, you will log in without being asked for the remote user's password (though you might be asked for your key's passphrase once per session).

For more networking tools, refer to Networking Commands on macOS Tahoe.