Всё про SSH
SSH- Secure Shell. Он нужен для безопасного подключения между хостом (компьютер, на котором будут производиться все действия. Его ещё называют сервер) и клиентом (компьютер, с которого будут производиться все действия. Его часто называют клиентом).
Дабы установить SSH (для нас это клиент OpenSSH), нужно выполнить следующую команду:
1
2
3
4
5
sudo pacman -Sy openssh
# или
sudo dnf install openssh
# или
sudo apt install openssh
Клиент установлен. Теперь время настройки OpenSSH
Настройки для клиента
Настройки для клиента находятся в /etc/ssh/ssh_config.
1
2
3
4
5
6
# Для всех
Host *
# Порт по умолчанию
Port 2020
# Запрещаю локальные команды
PermitLocalCommand no
Для того, чтобы точно посмотреть какой аргумент что делает нужно написать man ssh_config.
Настройка сервера SSH
Настройки для сервера находятся в /etc/ssh/sshd_config. SSHd- Secure Shell Daemon, это демон, который запускает сервер в фоновом режиме с конфигом, лежит по расположению описанному выше.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# Порт
Port 2020
# Время подключения
LoginGraceTime 1m
# Логиниться в рут, только если есть пароль от него
PermitRootLogin prohibit-password
# Максимальное число попыток входа
MaxAuthTries 3
# Максимальное количество сессий
MaxSessions 2
# Использовать ключ для входа
PubkeyAuthentication yes
# Файл, в котором проверяются доверенные ключи
AuthorizedKeysFile .ssh/authorized_keys
# Перенаправлять X
X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes
# Разрешить TTY
PermitTTY yes
PrintMotd no # pam does that
# Принтить последнее вхождение
PrintLastLog yes
# Баннер
Banner ~/.bannerForSSH
# Разрешение подключаться с помощью пароля
PasswordAuthentication no
PermitEmptyPasswords no
# override default of no subsystems
Subsystem sftp /usr/lib/ssh/sftp-server
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
#AuthorizedPrincipalsFile none
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
Для того, чтобы точно посмотреть какой аргумент что делает нужно написать man
sshd_config.
Генерация ключей
Доступ к серверу по паролю, хотя бы, просто не безопасен. Нам нужен ключ, с помощью которого только мы сможем подключаться к хосту. Чтобы взломать этот ключ, потребовалось бы около 1500 лет [Википедия].
Для того, чтобы получить такой ключ, воспользуемся утилитой, которая уже идёт вместе с пакетом OpenSSH.
1
ssh-keygen -t rsa
Далее называем наш файл и указываем путь к нему. По умолчанию это ~/.ssh/
Теперь внимательно: ключ с форматом .pub скидываем на сервер через физический доступ (флешка или другой накопитель) в папку .ssh, а также предварительно переименовываем его в authorized_keys
1
2
3
#Файл уже на сервере
mkdir -p ~/.ssh
cat id_rsa.pub > ~/.ssh/authorized_keys
Или делаем это всё командой (без физического доступа к серверу):
1
ssh-copy-id -i ~/.ssh/id_rsa.pub servername@ip -p port

Ключ без разрешения- ваш приватный ключ. Его не нужно никому отдавать. Он ваш. Распечатайте и положите под коврик у входа. После того, как вы скинули файл с разрешением .pub , вы можете спокойно использовать сервер.