eolas/neuron/d64aa559-4490-4b05-bfd9-4fd535f23109/SSH.md
2025-03-26 19:03:17 +00:00

77 lines
1.8 KiB
Markdown

---
tags: [encryption, shell, server-management]
created: Tuesday, March 04, 2025
---
# SSH
SSH is the de facto standard for remote access to a Unix machine.
`ssh` is the client which you use to connect to another machine.
`sshd` is the server that manages incoming client requests for access.
## sshd
Typically the SSH server will be turned off.
To run at boot:
```sh
sudo systemctl enable sshd
```
To start immediately:
```sh
sudo systemctl start sshd
```
The `sshd` configuration is found in the directory `/etc/ssh`.
The config file is `/etc/ssh/sshd_config`.
Mostly you can leave this alone but the following is a useful property to set:
```
PermitRootLogin no
```
See [Disable non-root ssh access](Disable_non-root_ssh_access.md) for more.
## Known hosts
Within your home directory at `./ssh/known_hosts` you will find a record of all
the public keys of the servers you have connected. This file exists for both
servers and clients, e.g:
```sh
cat ./ssh/known_hosts
# systemsobscure.net ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKn6vyv9b+Nk5r
# YVSAk5KvsTiC24K6uSpzCHzgLNoqt2
```
This shows the public key of my server at `systemsobscure.net` along with
others.
## Authorized keys
On servers only, there is also an `authorized_keys` file which shows the
server's own public keys that it presents to clients.
If I go to my server I see that this key matches the one I have on my client
computer `known_hosts`:
```sh
sudo cat /etc/ssh/ssh_host_ed25519_key.pub
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKn6vyv9b+Nk5rYVSAk5KvsTiC24K6uSpzCHzgLNoqt2 root@self-host-server
```
Each user on a server will also have a `~/.ssh` directory also containing an
`authorized_keys` file. This contains the public keys of clients who are allowed
to connect to that user account.
Hence I see the same public key of my desktop client machine in both places.
## How the tunnel is created