configurations/ssh.md

152 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SSH
## Сервер
Файл кофигурации `/etc/ssh/sshd_config`
### Базовая настройка
- `Port` (**22**) - порт, через который происходит подключение
- `PermitRootLogin` (yes|**no**) - подключение с использованием `root`-доступа
- `PubkeyAuthentication` (**yes**|no) - подключение с использованием ключа
- `PasswordAuthentication` (yes|**no**) - подключение с использованием пароля
- `PermitEmptyPasswords` (yes|**no**) - подключение с использованием пустого пароля
### Настройка файлов хранения публичных ключей:
Создание каталога в домашней директории пользователя (`/home/user/.ssh`), от которого будет происходить подключение к серверу:
```sh
mkdir ~/.ssh
chmod 700 ~/.ssh
```
Создание файла файла хранения публичных ключей:
```sh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
### Перезагрузка сервера SSH
Перезагрузка сервера SSH в `Ubuntu`
```sh
sudo systemctl restart sshd
```
В других дистрибутивах:
```sh
sudo service sshd restart
```
```sh
sudo /etc/init.d/sshd restart
```
## Клиент
### Подключение к серверу
Стандартное подключение:
```sh
ssh user@host
```
например, по умолчанию, через `22` порт:
```sh
ssh alexander@192.168.56.150
```
или с другим портом:
```sh
ssh -p 2222 alexander@192.168.56.150
```
или с использованием ключа `~/.ssh/mykey`:
```sh
ssh -i ~/.ssh/mykey alexander@192.168.56.150
```
### Создание ключа
Ключи SSH используют алгоритмы:
- 🚨 `DSA` - это небезопасно и даже больше не поддерживается начиная с версии 7 `OpenSSH`.
- ⚠️ `RSA` - зависит от размера ключа. Если он имеет длину 3072 или 4096 бит, то все хорошо. 1024-битная длина считается небезопасной.
- `CD ECDSA` - зависит от того, насколько хорошо компьютер может генерировать случайное число, которое будет использоваться для создания подписи. Существует также проблема достоверности на кривых NIST, которые используются ECDSA.
-`Ed25519` - самый рекомендуемый алгоритм с открытым ключом, доступный сегодня.
Создание ключей выполняется через утилиту `ssh-keygen`. По умолчанию создаётся пара 2048-битных ключей `RSA`:
```sh
ssh-keygen
```
или
```sh
ssh-keygen -t rsa
```
Самый рекомендуемый способ создания ключа:
```sh
ssh-keygen -t ed25519
```
Использование дополнительных полей при создании пары ключей SSH RSA:
```sh
ssh-keygen -t rsa -b 4096 -C "alexander@zhirov.website" -f ~/.ssh/mykey -N password
```
- `-t rsa` - тип создаваемого ключа
- `-b 4096` - количество битов в ключе
- `-C "alexander@zhirov.website"` - комментарий, который будет добавлен в конец файла открытого ключа для идентификации
- `-f ~/.ssh/mykey` - имя файла закрытого ключа. В том же каталоге будет создан соответствующий файл открытого ключа с `.pub` в имени
- `-N password` - дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа
### Файл конфигурации серверов
Настройка файла конфигурации серверов `~/.ssh/config`
```sh
Host myserver
HostName 192.168.56.150
User alexander
Port 2222
IdentityFile ~/.ssh/mykey
```
- `Host` - имя к подключаемому серверу (произвольное название)
- `HostName` - адрес сервера
- `User` - имя пользователя, от которого происходит подключение
- `Port` - порт, по которому происходит подключение
- `IdentityFile` - файл ключа, если подключение происходит с использованием ключа SSH
### Копирование ключа на сервер
После создания ключа `~/.ssh/mykey` необходимо зарегистрировать (добавить) его публичную версию `mykey.pub` на подключаемый сервер с использованием `ssh-copy-id`:
```sh
ssh-copy-id -i ~/.ssh/mykey.pub user@host
```
Добавление ключа с использованием дополнительных опций:
```sh
ssh-copy-id -i ~/.ssh/mykey.pub -p 2222 alexander@192.168.56.150
```
Добавления ключа вручную:
```sh
cat ~/.ssh/mykey.pub | ssh -p 2222 alexander@192.168.56.150 "cat >> ~/.ssh/authorized_keys"
```