Запрещаем пользователю доступ по SSH в Debian 7

Идентификация при помощи ключей SSH предоставляет дополнительную безопасность, а также может быть более удобным способом, чем традиционная идентификация при помощи пароля. При использовании вместе с программой, называемой агентом SSH, ключи SSH могут подключать вас к серверу или нескольким серверам без необходимости помнить и вводить ваш пароль отдельно для каждой системы.

Введение

Не на долго удалось мне отложить настройку этого варианта подключения к серверу. Необходимость настройки доступа по ключу пришла откуда я даже не думал. Неожиданно обнаружил что резервные копии периодически не проходят на  Резервирование сайтов у меня производится скриптом который резервирует вначале файлы сайта а потом базу. Пропуски были как с файлами так и с базами.  Решил настроить резервное копирование на сервер с которым идет соединение ssh.

Для того чтобы система сама соединялась по ключу к ssh серверу я создал на сервере пользователя которого запер в своей домашней директории с архивными копиями и при генерации связки ключей не указывал парольной фразы.

Как установить OpenSSH

OpenSSH — это бесплатный SSH-сервер, дающий возможность интерактивного управления сервером. Для установки SSH на сервер воспользуемся встроенным в Ubuntu пакетным менеджером apt:

# sudo apt install openssh-server -y

В большинстве дистрибутивов OpenSSH-сервер уже присутствует в системе и его установка не требуется. В случае отсутствия OpenSSH, вышеуказанная команда выполнит установку.

Теперь добавим SSH-сервер в автозагрузку. При следующем запуске сервера, операционная система выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Включим автозапуск:

Читайте также:  Wi-Fi Direct: персональная портативная сеть Wi-Fi.

# sudo systemctl enable ssh

Как установить OpenSSH

В результате получим:

Проверим работоспособность утилиты:

# ssh localhost

И убедимся, что всё корректно работает:

Как правильно запретить доступ по SSH в Debian

Я придерживаюсь максимально гибкого подхода при вводе ограничений. Одним пользователям доступ к SSH нужен, другим нет. Чтобы проще рулить этим процессом, я обычно создаю группу no-ssh. Все, кто в нее входит, будут лишаться доступа по SSH. Напомню, создать группу можно так:

groupadd no-ssh

После этого добавляем в нее пользователей, которым доступ к SSH не нужен. Например:.

usermod –G no-ssh username

Хорошо, пользователь username добавлен в группу np-ssh. Теперь внесем корректив в конфигурационный файл ssh-демона. Открываем файл с настройками:

nano /etc/ssh/sshd_config

Перемещаемся в самый конец файла и добавляем одну единственную строчку:

DenyGroups no-ssh

Сохраняем изменения (ctrl+o) и закрываем файл (ctrl+x). Одной простой строчкой мы установили запрет на подключение пользователей, входящих в группу no-ssh. Чтобы изменения вступили в силу, остается лишь перезапустить службу SSH:

/etc/init.d/ssh restart

Все, теперь пользователь username доступа к SSH решился раз и навсегда.

Настройка алиасов для ssh

В начале статьи я написал что к любому ssh-серверу можно подключаться одной командой, не вводя имени пользователя, пароля, порта и ip-адреса. Так вот, сделать это можно настроив так называемые алиасы или говоря другими словами — параметры подключений.

На домашней машине в каталоге .ssh создадим файл config.

nano ~/.ssh/config

Параметры подключения могут быть общими и распространяться на все подключения. А могут быть индивидуальными, такие параметры работают только для конкретного подключения.

Общие параметры задаются сразу для всех хостов. Пример ниже не дает разрывать соединения при простое.

Host * KeepAlive yes ServerAliveInterval 30

Читайте также:  Linux Mint vs Ubuntu: что лучше выбрать

Сейчас нас интересуют индивидуальные параметры соединения. Ниже пример из моего файла настроек описывающий подключение к серверу на котором находится этот сайт.

# У меня не 20000 порт — это для примера) Host techlist HostName Port 20000 User root

Директива Host задает имя подключения (алиас) в моем случае — techlist, это имя используется для подключения к серверу. В значении директивы HostName можно указать как ip-адрес, так и доменное имя (если оно есть) в таком случае оно резолвится через DNS.

Если не указывать номер порта, то по умолчанию используется 22-ой порт. С пользователем то же самое, если вы root, то и соединяться будете от имени root-пользователя.

Таким образом, имея вышеуказанные настройки в файле config, я могу подключаться к своему серверу вот так.

ssh techlist

А теперь я расскажу как подключаться только одним словом, как и писал выше, Да, я ленивый, и даже два слова — это для меня много. Поэтому я сделал вот такой костылик на скриптах.

Создаю скрипт в каталоге /usr/bin. Обзывайте его как хотите, это и будет ваша команда.

nano /usr/bin/techlist

Добавляю в него следующее содержимое (просто вызов команды которую настроили выше).

#!/bin/bash ssh techlist exit

Делаю файл исполняемым.

chmod +x /usr/bin/techlist

Подключаюсь к серверу только одним словом)

techlist

Генерация ключей

Мы сгенерируем набор ключей. Запустите следующие команды (адаптировано со страницы справки OpenSSH / Keys Ubuntu).

mkdir ~ / .ssh chmod 700 ~ / .ssh ssh-keygen -t rsa

Первая команда создает скрытый каталог «.ssh» в вашей домашней папке, вторая команда изменяет права доступа к папке, в то время как третья команда фактически генерирует набор ключей RSA. Сначала вас попросят указать место для сохранения ключей (оставьте поле пустым и нажмите клавишу ввода, чтобы сохранить его в месте по умолчанию), а затем укажите пароль.

Читайте также:  Вышла iOS 13.4 beta 2 — что нового в этом версии обновления

Эта парольная фраза дополнительно шифрует закрытый ключ, хранящийся на вашем компьютере, что дает вам больше времени для защиты SSH-сервера в случае кражи вашего личного ключа. Убедитесь, что вы выбрали парольную фразу, которую сможете запомнить, так как вам придется вводить ее, когда вы пытаетесь использовать свой ключ.