Getting started
Initial system setup and secure remote access configuration using SSH keys and custom aliases.
-
Update and upgrade
Fetch the latest package lists and apply security patches.
Terminal window sudo apt update && sudo apt upgrade -y -
Reboot
Apply kernel updates and restart services to ensure a clean state.
Terminal window sudo reboot -
SSH key management (client)
Generate unique keys for each device to improve security and auditability.
-
Generate named key
Instead of the default name, label the key after the hostname (e.g.,
id_hp-laptoporid_macbook-pro).Terminal window ssh-keygen -t ed25519 -f ~/.ssh/id_{{HOSTNAME_VAR}} -
Copy key to server
Use
ssh-copy-idto automatically handle directory creation and permissions on the remote server.Terminal window ssh-copy-id -i ~/.ssh/id_{{HOSTNAME_VAR}} {{USERNAME_VAR}}@{{SERVER_IP_VAR}}
-
-
Server security (host)
Once your key is verified, disable password logins to prevent brute-force attacks.
-
Install SSH server
Ensure the OpenSSH server is installed and active.
Terminal window sudo apt install openssh-server -y && sudo systemctl enable --now ssh -
Configure SSH daemon
Edit the server configuration to enforce key-based authentication.
Terminal window sudo nano /etc/ssh/sshd_config/etc/ssh/sshd_config # Disable password authPasswordAuthentication no# Prevent root login entirelyPermitRootLogin no# Custom SSH port (optional)Port 2222# Only allow specific users (optional)AllowUsers {{USERNAME_VAR}} $USERNAME2 $USERNAME3 -
Verify and restart
Always check the status before exiting to ensure you aren’t locked out.
Terminal window sudo systemctl restart ssh && systemctl status ssh
-
-
SSH client (local)
Simplify your workflow by creating aliases. This allows you to type
ssh $ALIAS_NAMEinstead of remembering IPs and key paths.-
Edit config
Open (or create) the SSH config file on your local machine.
Terminal window nano ~/.ssh/config -
Add host alias
Define your server details. Now you can connect using just the alias name.
~/.ssh/config # Default settings for all hostsHost *ServerAliveInterval 60ServerAliveCountMax 5# Example hostHost $ALIAS_NAMEHostName {{SERVER_IP_VAR}}User {{USERNAME_VAR}}Port 2222IdentityFile ~/.ssh/id_{{HOSTNAME_VAR}} -
Connect via alias
Test the new configuration.
Terminal window ssh $ALIAS_NAME
-