Добрый день дорогой читатель, данное повествование не является истиной в последней инстанции, это некая инструкции по установке и настройке SSH-сервера (в основном для собственного пользования) с пояснениями и все возможными мыслями.
SSH (Secure Shell) - это сетевой протокол, который обеспечивает безопасное удаленное подключение и управление операционной системой компьютера через интернет. Он шифрует весь трафик между клиентом и сервером, защищая данные от перехвата, и позволяет выполнять команды, передавать файлы и управлять базами данных удаленно.
И так SSH-сервер будет установлен на машину с Debian (ip адрес 192.168.1.1), в принципе без разницы какой дистрибутив. Подключаться к нему будем с другой машины под управлением Arch, что тоже не принципиально, используем пользователя john (у вас же может быть другой) сделано для наглядности.
Переходим на машину с Debian и приступаем к установке SSH-сервера. Достаточно установить соответствующий пакет, в большинстве дистрибутивов Linux SSH-сервер поставляется в пакете openssh-server. Например для Debian подобных дистрибутивов достаточно выполнить команду:
sudo apt install openssh-server
проверим статус сервиса SSH командой ниже
sudo systemctl status sshd
в данном случае сервис запущен
Основной конфиг для SSH-сервера /etc/ssh/sshd_config. Приступим к редактированию конфига
sudo nano /etc/ssh/sshd_config
Важные параметры для настройки, рекомендовал бы более детально изучить параметр остальные параметры, там много всего интересного
- Port - Порт, на котором слушает SSH (по умолчанию 22) Port 22 или можно изменить на сколько фантазии хватит, с учетом того что всего портов 65536 из них 0-1023 это системные, пользовательские это 1024-49151 и динамически используемые 49152–65535.
- PermitRootLogin - Разрешение входа под root (рекомендуется no или prohibit-password) PermitRootLogin no
- PasswordAuthentication - Разрешение аутентификации по паролю, пока не настроен доступ по ключам выставим PasswordAuthentication yes после настройки ключей заменим PasswordAuthentication no
- PubkeyAuthentication Разрешение аутентификации по ключам PubkeyAuthentication yes
- AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 использовать ключи .ssh/authorized_keys и .ssh/authorized_keys2
- AllowUsers - Список пользователей, которым разрешён вход например AllowUsers user1 user2
- PermitEmptyPasswords - Разрешать вход с пустым паролем (рекомендуется no) PermitEmptyPasswords no
- LoginGraceTime - Время (сек), отведённое на вход LoginGraceTime 60
- MaxAuthTries - Максимальное количество попыток аутентификации MaxAuthTries 3
- UsePAM - Использовать PAM (Pluggable Authentication Modules) UsePAM yes если будете использовать двухфакторную аутентификацию
После внесения соответствующих изменений, перезапустим ssh-сервер
sudo systemctl restart sshd
Давайте проверим все ли работает например с того же сервера(машина на Debian) зайти на самого себя.
Нюанс. Если iptables включен то надо добавить правила и разрешить входящий/исходящий трафик на порт 22 исходя из политики по умолчанию(в данном случае политика по умолчанию блокировать все подключения)
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
и конечно же сохраним
sudo netfilter-persistent save
после этого ssh сервер будет доступен(даже с самого себя)
С настройкой SSH-сервера от части покончено, перейдем к генерации ключей. Для этого нам потребуется сгенерировать ключ выполнив следующую команду на клиенте, как было выше клиент на Arch но это не столь суть важно.
Если выбираем метод шифрования RSA для ключей, то выполняем следующие команды
ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"
как уже догадались "ваш_email@example.com" заменить на свою почту, далее копируем публичный ключ на сервер
ssh-copy-id john@192.168.1.1
Или вручную:
cat ~/.ssh/id_rsa.pub | ssh john@192.168.1.1 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'
Если выбираем метод шифрования Ed25519 для ключей, что крайне рекомендуется в плане безопасности, то выполняем следующие команды
ssh-keygen -t ed25519 -C "ваш_email@example.com"
копируем публичный ключ на сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub john@192.168.1.1
далее вернемся на ssh-сервер
ssh john@192.168.1.1
отредактируем конфиг
sudo nano /etc/ssh/sshd_config
исправив данный параметр как описано ниже, тем самым отключим аутентификацию по паролю
PasswordAuthentication no
и перезапускаем ssh-сервер что бы настройки вступили в силу
sudo systemctl restart sshd
Далее пробуем подключиться к серверу с использованием ключа
ssh john@192.168.1.1
если используете не стандартный порт для подключения к SSH-серверу, то добавьте -p <порт> в моем случае это будет выглядеть так
ssh -p 2222 john@192.168.1.1
В дополнение рекомендации по безопасности:
- Используйте нестандартный порт (например, 2222) для снижения автоматических атак.
- Отключите вход под root (PermitRootLogin no).
- Используйте файрвол (например, ufw, firewalld, iptables) для ограничения доступа к SSH.
- Включите двухфакторную аутентификацию (например, с помощью Google Authenticator).
- Ограничьте доступ по IP (через файрвол или параметр `AllowUsers`).
- Регулярно обновляйте OpenSSH.
Для настройки iptables воспользуйтесь статьей "iptables часть 4 (настройка доступа к SSH-серверу)"
За основу взята документация по SSH-серверу, а так же информация с форумов по данной тематике, информация других пользователей размещенная на
просторах всемирной паутины и собственные наработки.
За сим откланиваюсь...