# Настройка 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" ```