152 lines
5.5 KiB
Markdown
152 lines
5.5 KiB
Markdown
# Настройка 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"
|
||
```
|