Идентификация при помощи ключей SSH предоставляет дополнительную безопасность, а также может быть более удобным способом, чем традиционная идентификация при помощи пароля. При использовании вместе с программой, называемой агентом SSH, ключи SSH могут подключать вас к серверу или нескольким серверам без необходимости помнить и вводить ваш пароль отдельно для каждой системы.
Введение
Не на долго удалось мне отложить настройку этого варианта подключения к серверу. Необходимость настройки доступа по ключу пришла откуда я даже не думал. Неожиданно обнаружил что резервные копии периодически не проходят на Резервирование сайтов у меня производится скриптом который резервирует вначале файлы сайта а потом базу. Пропуски были как с файлами так и с базами. Решил настроить резервное копирование на сервер с которым идет соединение ssh.
- Как подключиться к серверу по SSH с …
- Настройка SSH в Debian | Losst
- Аутентификация с помощью ssh ключей и …
Для того чтобы система сама соединялась по ключу к ssh серверу я создал на сервере пользователя которого запер в своей домашней директории с архивными копиями и при генерации связки ключей не указывал парольной фразы.
Как установить OpenSSH
OpenSSH — это бесплатный SSH-сервер, дающий возможность интерактивного управления сервером. Для установки SSH на сервер воспользуемся встроенным в Ubuntu пакетным менеджером apt:
# sudo apt install openssh-server -y
В большинстве дистрибутивов OpenSSH-сервер уже присутствует в системе и его установка не требуется. В случае отсутствия OpenSSH, вышеуказанная команда выполнит установку.
Теперь добавим SSH-сервер в автозагрузку. При следующем запуске сервера, операционная система выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Включим автозапуск:
# sudo systemctl enable ssh

В результате получим:
Проверим работоспособность утилиты:
# 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
Сейчас нас интересуют индивидуальные параметры соединения. Ниже пример из моего файла настроек описывающий подключение к серверу на котором находится этот сайт.
# У меня не 20000 порт — это для примера) Host techlist HostName Port 20000 User root
Директива Host задает имя подключения (алиас) в моем случае — techlist, это имя используется для подключения к серверу. В значении директивы HostName можно указать как ip-адрес, так и доменное имя (если оно есть) в таком случае оно резолвится через DNS.
Если не указывать номер порта, то по умолчанию используется 22-ой порт. С пользователем то же самое, если вы root, то и соединяться будете от имени root-пользователя.
Таким образом, имея вышеуказанные настройки в файле config, я могу подключаться к своему серверу вот так.
- Авторизация по ключу SSH | Losst
- SSH авторизация в Linux по ключу на …
- SSH на сервере с Ubuntu …
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. Сначала вас попросят указать место для сохранения ключей (оставьте поле пустым и нажмите клавишу ввода, чтобы сохранить его в месте по умолчанию), а затем укажите пароль.
Эта парольная фраза дополнительно шифрует закрытый ключ, хранящийся на вашем компьютере, что дает вам больше времени для защиты SSH-сервера в случае кражи вашего личного ключа. Убедитесь, что вы выбрали парольную фразу, которую сможете запомнить, так как вам придется вводить ее, когда вы пытаетесь использовать свой ключ.