======Access your server using SSH======
>[[https://en.wikipedia.org/wiki/SSH_(Secure_Shell)|SSH]] or Secure Shell is a cryptographic network protocol for operating network services securely over an unsecured network. Typical applications include remote command-line, login, and remote command execution, but any network service can be secured with SSH.
Using SSH, you can access your server (or a friend's desktop) without needing physical access. In this manual, we are going to set up OpenSSH on the client and the server. You will authenticate with your public key, which is more secure than plain password authentication.
=====Prerequisites=====
* A running Debian (or [[wp>Category:Debian-based_distributions|Debian-based]]) **server**.
* A Debian(-based) desktop or laptop (which we call the **client**).
=====Generate a keypair on your client=====
Install openssh-client on the client:
sudo apt install openssh-client
Generate a keypair:
ssh-keygen -t ed25519 -C ""
You will be asked to enter a self-chosen //private key passphrase//.
Get your generated public key,
cat ~/.ssh/id_ed25519.pub
and copy the output (select it, right-click, copy).
=====Initialize the public key authentication=====
====(a) if you have physical access to your server====
On the **server**, install OpenSSH server:
sudo apt install openssh-server
Continue to follow the instructions at (b) to secure SSH using public key authentication.
====(b) if you have SSH access to your server====
On the **client**, access your server using password-authentication:
ssh @example.com
You are now on the **server**. Create the ''authorized_keys'' file:
cd ~
mkdir .ssh
chmod 700 .ssh
cd .ssh
nano authorized_keys
Paste your public key in this file (~/.ssh/authorized_keys).
Save the file and exit GNU Nano.
Change permissions to this file:
chmod 600 authorized_keys
Open the SSH configuration file:
sudo nano /etc/ssh/sshd_config
In that configuration file, turn off root login and password authentication:
PermitRootLogin no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
Restart the SSH daemon (process):
sudo systemctl restart ssh.service
Leave your current SSH session:
exit
Re-login into your server using SSH (on your **client**):
ssh @example.com
SSH will not ask for your password anymore. Instead it will (probably) ask for your //private key passphrase//.
Leave your current SSH session:
exit
Congratulations, you can now safely login to your server using SSH public key authentication!
=====More information=====
For more advanced use cases, see [[https://wiki.quietlife.nl/doku.php?id=manuals:networking:ssh-tunnels|Connecting to a server's web interface with SSH]] on the Quietlife wiki.