Содержание:
Как известно, открытая технология SSH разрешает удаленно подключаться к определенному компьютеру и передавать данные через выбранный защищенный протокол. Это позволяет реализовать и полноценное управление выбранным устройством, обеспечив безопасный обмен важной информацией и даже паролями. Иногда у пользователей возникает надобность осуществить соединение через SSH, однако помимо инсталляции самой утилиты приходится производить и дополнительные настройки. Об этом мы и хотим поговорить сегодня, взяв за пример дистрибутив Debian.
Настраиваем SSH в Debian
Мы разделим процесс конфигурации на несколько этапов, поскольку каждый отвечает за осуществление конкретных манипуляций и может просто не пригодиться определенным юзерам, что зависит от личных предпочтений. Начнем с того, что все действия будут производиться в консоли и потребуется подтверждение прав суперпользователя, поэтому подготовьтесь к этому заранее.
Установка SSH-server и SSH-client
По умолчанию SSH входит в стандартный набор утилит операционной системы Debian, однако из-за каких-либо особенностей нужные файлы могут устареть или просто отсутствовать, например, когда пользователь вручную произвел деинсталляцию. Если вы нуждаетесь в предварительной установке SSH-server и SSH-client, выполните следующую инструкцию:
- Откройте меню «Пуск» и запустите оттуда «Терминал». Сделать это можно и через стандартную комбинацию клавиш Ctrl + Alt + T.
- Здесь вас интересует команда
sudo apt install openssh-server
, отвечающая за установку серверной части. Введите ее и нажмите на Enter для активации. - Как вы уже знаете, действия, выполняемые с аргументом sudo, потребуется активировать, указав пароль суперпользователя. Учитывайте, что вводимые в данной строке символы не отображаются.
- Вы будете уведомлены о том, что пакеты добавлены или обновлены. Если SSH-server уже инсталлирован в Debian, появится сообщение о наличии указанного пакета.
- Далее потребуется добавить в систему и клиентскую часть, что касается и того компьютера, к которому в будущем будет осуществляться подключение. Для этого используется похожая команда
sudo apt-get install openssh-client
.
Больше никаких дополнительных компонентов инсталлировать не придется, теперь можно смело переходить к управлению сервером и настройке конфигурационных файлов, чтобы создать ключи и подготовить все для дальнейшего соединения с удаленным рабочим столом.
Управление сервером и проверка его работы
Вкратце давайте остановимся на том, как осуществляется управление установленным сервером и проверка его работы. Это необходимо сделать еще до того, как переходить к настройке, чтобы убедиться в корректности функционирования добавленных компонентов.
- Используйте команду
sudo systemctl enable sshd
, чтобы добавить сервер в автозагрузку, если это не случилось автоматически. В случае надобности отмены запуска вместе с операционной системой используйтеsystemctl disable sshd
. Тогда для ручного запуска понадобится указыватьsystemctl start sshd
. - Все подобные действия абсолютно всегда должны быть выполнены от имени суперпользователя, поэтому нужно вводить его пароль.
- Задействуйте команду
ssh localhost
для проверки сервера на работоспособность. Заменитеlocalhost
на адрес локального компьютера. - При первом подключении вы будете уведомлены о том, что источник не является проверенным. Это происходит, поскольку мы еще не выставили настройки безопасности. Сейчас просто подтвердите продолжение подключения, введя yes.
Добавление пары ключей RSA
Подключение от сервера к клиенту и наоборот через SSH осуществляется путем ввода пароля, однако можно и даже рекомендуется создать пару ключей, которая будет разработана через алгоритмы RSA. Этот тип шифрования позволит создать оптимальную защиту, которую будет сложно обойти злоумышленнику при попытке взлома. На добавление пары ключей потребуется всего несколько минут, а выглядит это процесс так:
- Откройте «Терминал» и введите там
ssh-keygen
. - Вы можете самостоятельно выбрать место, куда требуется сохранить путь к ключу. Если нет желания его менять, просто нажмите на клавишу Enter.
- Сейчас создается открытый ключ. Он может быть защищен кодовой фразой. Введите ее в отобразившуюся строку или оставьте пустой, если не хотите активировать данную опцию.
- При вводе ключевой фразы придется указать ее еще раз, чтобы подтвердить.
- Отобразится уведомление о создании публичного ключа. Как видите, ему был присвоен набор случайных символов, а также создалось изображение по рандомным алгоритмам.
Благодаря только что произведенным действием создался секретный и открытый ключ. Они и будут задействованы для соединения между устройствами. Сейчас придется скопировать открытый ключ на сервер, а сделать это можно разными методами.
Копирование открытого ключа на сервер
В Debian существует три варианта, с помощью которых можно скопировать открытый ключ на сервер. Мы предлагаем сразу ознакомиться со всеми ними, чтобы в будущем выбрать оптимальный. Это актуально в тех ситуациях, когда один из методов не подходит или не удовлетворяет потребности юзера.
Способ 1: Команда ssh-copy-id
Начнем с самого простого варианта, подразумевающего использование команды ssh-copy-id. По умолчанию эта утилита уже встроена в ОС, поэтому в предварительной инсталляции не нуждается. Синтаксис ее тоже максимально прост, а от вас потребуется выполнить такие действия:
- В консоли введите команду
ssh-copy-id username@remote_host
и активируйте ее. Замените username@remote_host на адрес целевого компьютера, чтобы отправка прошла успешно. - При первой попытке соединения вы увидите сообщение
"The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes"
. Выберите положительный ответ, чтобы продолжить подключение. - После этого утилита самостоятельно займется поиском и копированием ключа. В итоге, если все прошло успешно, на экране появится уведомление «
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@203.0.113.1's password:
«. Это значит, что можно вводить пароль и переходить к непосредственному управлению удаленным рабочим столом.
Дополнительно уточним, что после первой успешной авторизации в консоли появится уведомление следующего характера:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
В нем говорится о том, что ключ был успешно добавлен на удаленный компьютер и теперь не возникнет никаких проблем при попытках подключения.
Способ 2: Экспорт ключа через SSH
Как вы знаете, экспорт публичного ключа позволит подключаться к указанному серверу без предварительного ввода пароля. Сейчас, пока ключ еще не находится на целевом компьютере, подключиться через SSH можно путем ввода пароля, чтобы затем вручную перенести необходимый файл. Для этого в консоли вам придется вписать команду cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
.
На экране должно появиться уведомление
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)?
Подтвердите его, чтобы продолжить соединение. Публичный ключ будет автоматически скопирован в конец конфигурационного файла «authorized_keys». На этом процедуру экспорта можно считать оконченной.
Способ 3: Ручное копирование ключа
Этот метод подойдет тем пользователям, у кого нет возможности создать удаленное подключение к целевому компьютеру, однако имеется физический доступ к нему. В таком случае ключ придется переносить самостоятельно. Для начала определите сведения о нем на серверном ПК через cat ~/.ssh/id_rsa.pub
.
В консоли должна отобразиться строка ssh-rsa + ключ в виде набора символов== demo@test
. Теперь можно перейти к другому компьютеру, где следует создать новую директорию, введя mkdir -p ~/.ssh
. В ней же добавляется текстовый файл под названием authorized_keys
. Осталось только вставить туда определенный ранее ключ через echo + строка публичного ключа >> ~/.ssh/authorized_keys
. После этого аутентификация будет доступна без предварительного ввода паролей. Осуществляется это через команду ssh username@remote_host
, где username@remote_host следует заменить на имя необходимого хоста.
Рассмотренные только что способы позволили перенести публичный ключ на новое устройство, чтобы сделать возможным подключение без ввода пароля, однако сейчас форма на ввод все еще отображается. Такое положение вещей позволяет злоумышленникам получить доступ к удаленному рабочему столу, просто перебрав пароли. Далее мы предлагаем заняться обеспечением безопасности, выполнив определенные настройки.
Отключение аутентификации по паролю
Как уже было сказано ранее, возможность аутентификации по паролю может стать слабым звеном в безопасности удаленного соединения, поскольку существуют средства переборов таких ключей. Мы рекомендуем отключить эту опцию, если вы заинтересованы в максимальной защите своего сервера. Сделать это можно так:
- Откройте конфигурационный файл
/etc/ssh/sshd_config
через любой удобный текстовый редактор, это может быть, например, gedit или nano. - В открывшемся списке отыщите строку «PasswordAuthentication» и уберите знак #, чтобы сделать эту команду активной. Поменяйте значение yes на
no
, чтобы отключить интересующую опцию. - По завершении нажмите на Ctrl + O, чтобы сохранить изменения.
- Не меняйте название файла, а просто нажмите на Enter для применения настройки.
- Можно покинуть текстовый редактор, нажав на Ctrl + X.
- Все изменения вступят в силу только после перезагрузки службы SSH, поэтому сделайте это сразу же через
sudo systemctl restart ssh
.
В результате выполненных действий возможность аутентификации по паролю будет отключена, а вход станет доступен только через пару ключей RSA. Учитывайте это при произведении подобной конфигурации.
Настройка параметра межсетевого экрана
В завершение сегодняшнего материала хотим рассказать о настройке межсетевого экрана, который будет использован для разрешений или запрещений соединений. Мы пройдемся только по основным пунктам, взяв за пример Uncomplicated Firewall (UFW).
- Для начала давайте просмотрим список существующих профилей. Введите
sudo ufw app list
и нажмите на Enter. - Подтвердите действие, указав пароль суперпользователя.
- В списке отыщите SSH. Если эта строка там присутствует, значит, все функционирует корректно.
- Разрешите соединение через эту утилиту, написав
sudo ufw allow OpenSSH
. - Включите межсетевой экран, чтобы обновить правила. Делается это через команду
sudo ufw enable
. - Вы в любой момент можете проверить текущее состояние брандмауэра, введя
sudo ufw status
.
На этом процесс настройки SSH в Debian закончен. Как видите, существует множество различных нюансов и правил, которые требуется соблюдать. Конечно, в рамках одной статьи невозможно уместить абсолютно всю информацию, поэтому мы затронули только основные сведения. Если вы заинтересованы в получении более углубленных данных об этой утилите, советуем ознакомиться с ее официальной документацией.
Наш Telegram каналТолько полезная информация
Большое спасибо, а то запамятовал как это правильно делается.