Технология SSH (Secure Shell) позволяет проводить безопасное удаленное управление компьютером через защищенное соединение. SSH производит шифровку всех передаваемых файлов, включая пароли, а также передает совершенно любой сетевой протокол. Для корректной работы инструмента его необходимо не только установить, но еще и настроить.
ННастраиваем SSH в Ubuntu
Если вы еще не выполнили инсталляцию на серверный и клиентский ПК, следует это сделать первоначально, благо осуществляется вся процедура достаточно просто и не займет много времени. С детальным руководством по этой теме знакомьтесь в другой нашей статье по следующей ссылке. В ней также показана процедура редактирования файла конфигурации и тестирование работы SSH, поэтому сегодня мы остановимся немного на других задачах.
Создание пары ключей RSA
В только что установленном SSH еще нет заданных ключей для осуществления подключения от сервера к клиенту и наоборот. Все эти параметры необходимо задать вручную сразу же после добавления всех компонентов протокола. Пара ключей работает с помощью алгоритма RSA (сокращение от фамилий разработчиков Rivest, Shamir и Adleman). Благодаря этой криптосистеме через специальные алгоритмы производится шифрование ключей. Для создания пары открытых ключей вам нужно лишь ввести соответствующие команды в консоль и следовать появившимся инструкциям.
Перейдите к работе с «Терминалом»любым удобным методом, например, открыв его через меню или комбинацию клавиш Ctrl + Alt + T.
Введите команду ssh-keygen, а затем нажмите на клавишу Enter.
Будет предложено создать файл, куда сохранятся ключи. Если желаете оставить их в расположении, выбранном по умолчанию, просто нажмите на Enter.
Открытый ключ может быть защищен кодовой фразой. Если хотите использовать эту опцию, в появившейся строке напишите пароль. Вводимые символы при этом отображаться не будут. В новой строке потребуется его повторить.
Далее вы увидите уведомление о том, что ключ был сохранен, а также сможете ознакомиться с его случайным графическим изображением.
Теперь имеется созданная пара ключей — секретный и открытый, которые будут использоваться для дальнейшего подключения между компьютерами. Нужно лишь поместить ключ на сервер, чтобы аутентификация SSH проходила успешно.
ККопирование открытого ключа на сервер
Существует три метода копирования ключей. Каждый из них будет наиболее оптимален в различных ситуациях, когда, например, один из способов не работает или не подходит для определенного пользователя. Мы предлагаем рассмотреть все три варианта, начав с самого простого и действенного.
Вариант 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??d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Надо указать вариант yes для продолжения соединения. После этого утилита самостоятельно займется поиском ключа в виде файла id_rsa.pub, который был создан ранее. При успешном обнаружении отобразится такой результат:
/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
[email protected]'s password:
Укажите пароль от удаленного хоста, чтобы утилита смогла войти в него. Инструмент будет копировать данные из файла публичного ключа ~/.ssh/id_rsa.pub, а после этого на экране появится сообщение:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Появление такого текста означает, что ключ был успешно загружен на удаленный компьютер, и теперь не возникнет никаких проблем с соединением.
Вариант 2: Копирование открытого ключа через SSH
Если у вас не получается воспользоваться упомянутой выше утилитой, но имеется пароль для входа на удаленный сервер SSH, можете загрузить свой пользовательский ключ вручную, тем самым обеспечив дальнейшую стабильную аутентификацию при соединении. Используется для этого команда cat, которая прочитает данные из файла, а потом они будут отправлены на сервер. В консоли потребуется ввести строку
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??d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
продолжите подключение и введите пароль для входа на сервер. После этого открытый ключ будет автоматически скопирован в конец файла конфигурации authorized_keys.
Вариант 3: Ручное копирование открытого ключа
В случае отсутствия доступа к удаленному компьютеру через SSH-сервер, все описанные выше действия выполняются вручную. Для этого сначала узнается информация о ключе на серверном ПК через команду cat ~/.ssh/id_rsa.pub.
На экране будет отображена примерно такая строка: ssh-rsa + ключ в виде набора символов== demo@test. После этого перейдите к работе на удаленное устройство, где создайте новую директорию через mkdir -p ~/.ssh. В ней дополнительно создается файл authorized_keys. Далее вставьте туда ключ, который вы узнали ранее через echo + строка публичного ключа >> ~/.ssh/authorized_keys. После этого можно пробовать проводить аутентификацию с сервером без использования паролей.
ААутентификация на сервере через созданный ключ
В предыдущем разделе вы узнали о трех методах копирования ключа удаленного компьютера на сервер. Такие действия позволят подключиться без использования пароля. Выполняется эта процедура через командную строку путем ввода shh ssh username@remote_host, где username@remote_host — имя пользователя и хост нужного компьютера. При первом подключении вы будете уведомлены о незнакомом соединении и можете продолжить, выбрав вариант yes.
Подключение произойдет автоматически, если во время создания пары ключей не была задана ключевая фраза (passphrase). В противном случае сначала придется ввести ее, чтобы продолжить работу с SSH.
ООтключение аутентификации по паролю
Успешной настройка копирования ключей считается в той ситуации, когда удается войти на сервер без использования пароля. Однако возможность аутентификации таким образом позволяет злоумышленникам использовать инструменты для подбора пароля и взламывать защищенное соединение. Обезопасить себя от таких случаев позволит полноценное отключение входа по паролю в конфигурационном файле SSH. Для этого потребуется:
В «Терминале» откройте конфигурационный файл через редактор с помощью команды sudo gedit /etc/ssh/sshd_config.
Найдите строку «PasswordAuthentication» и уберите знак # в начале, чтобы раскомментировать параметр.
Измените значение на no и сохраните текущую конфигурацию.
Закройте редактор и перезапустите сервер sudo systemctl restart ssh.
Аутентификация по паролю отключится, и войти на сервер можно будет только с использованием специально созданных для этого ключей с алгоритмом RSA.
ННастройка стандартного firewall
В Убунту сетевой защитой по умолчанию выступает фаервол Uncomplicated Firewall (UFW). Он позволяет разрешать соединения для избранных сервисов. Каждое приложение создает свой профиль в этом инструменте, а UFW управляет ими, разрешая или запрещая подключения. Настройка профиля SSH путем добавления его в список осуществляется так:
Откройте список профилей firewall через команду sudo ufw app list.
Введите пароль от учетной записи для отображения информации.
Вы увидите лист доступных приложений, среди них должен находиться и OpenSSH.
Теперь следует разрешить соединения через SSH. Для этого добавим его в список разрешенных профилей с помощью sudo ufw allow OpenSSH.
Включите firewall, обновив правила, sudo ufw enable.
Для убеждения в том, что соединения разрешены, следует прописать sudo ufw status, после чего вы увидите состояние сети.
На этом наши инструкции по конфигурации SSH в Ubuntu завершены. Дальнейшие настройки конфигурационного файла и других параметров осуществляются лично каждым пользователем под его запросы. Ознакомиться с действием всех составляющих SSH вы можете в официальной документации протокола.
ННастраиваем SSH в Ubuntu
Если вы еще не выполнили инсталляцию на серверный и клиентский ПК, следует это сделать первоначально, благо осуществляется вся процедура достаточно просто и не займет много времени. С детальным руководством по этой теме знакомьтесь в другой нашей статье по следующей ссылке. В ней также показана процедура редактирования файла конфигурации и тестирование работы SSH, поэтому сегодня мы остановимся немного на других задачах.
Создание пары ключей RSA
В только что установленном SSH еще нет заданных ключей для осуществления подключения от сервера к клиенту и наоборот. Все эти параметры необходимо задать вручную сразу же после добавления всех компонентов протокола. Пара ключей работает с помощью алгоритма RSA (сокращение от фамилий разработчиков Rivest, Shamir и Adleman). Благодаря этой криптосистеме через специальные алгоритмы производится шифрование ключей. Для создания пары открытых ключей вам нужно лишь ввести соответствующие команды в консоль и следовать появившимся инструкциям.
Перейдите к работе с «Терминалом»любым удобным методом, например, открыв его через меню или комбинацию клавиш Ctrl + Alt + T.
Введите команду ssh-keygen, а затем нажмите на клавишу Enter.
Будет предложено создать файл, куда сохранятся ключи. Если желаете оставить их в расположении, выбранном по умолчанию, просто нажмите на Enter.
Открытый ключ может быть защищен кодовой фразой. Если хотите использовать эту опцию, в появившейся строке напишите пароль. Вводимые символы при этом отображаться не будут. В новой строке потребуется его повторить.
Далее вы увидите уведомление о том, что ключ был сохранен, а также сможете ознакомиться с его случайным графическим изображением.
Теперь имеется созданная пара ключей — секретный и открытый, которые будут использоваться для дальнейшего подключения между компьютерами. Нужно лишь поместить ключ на сервер, чтобы аутентификация SSH проходила успешно.
ККопирование открытого ключа на сервер
Существует три метода копирования ключей. Каждый из них будет наиболее оптимален в различных ситуациях, когда, например, один из способов не работает или не подходит для определенного пользователя. Мы предлагаем рассмотреть все три варианта, начав с самого простого и действенного.
Вариант 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??d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Надо указать вариант yes для продолжения соединения. После этого утилита самостоятельно займется поиском ключа в виде файла id_rsa.pub, который был создан ранее. При успешном обнаружении отобразится такой результат:
/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
[email protected]'s password:
Укажите пароль от удаленного хоста, чтобы утилита смогла войти в него. Инструмент будет копировать данные из файла публичного ключа ~/.ssh/id_rsa.pub, а после этого на экране появится сообщение:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Появление такого текста означает, что ключ был успешно загружен на удаленный компьютер, и теперь не возникнет никаких проблем с соединением.
Вариант 2: Копирование открытого ключа через SSH
Если у вас не получается воспользоваться упомянутой выше утилитой, но имеется пароль для входа на удаленный сервер SSH, можете загрузить свой пользовательский ключ вручную, тем самым обеспечив дальнейшую стабильную аутентификацию при соединении. Используется для этого команда cat, которая прочитает данные из файла, а потом они будут отправлены на сервер. В консоли потребуется ввести строку
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??d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
продолжите подключение и введите пароль для входа на сервер. После этого открытый ключ будет автоматически скопирован в конец файла конфигурации authorized_keys.
Вариант 3: Ручное копирование открытого ключа
В случае отсутствия доступа к удаленному компьютеру через SSH-сервер, все описанные выше действия выполняются вручную. Для этого сначала узнается информация о ключе на серверном ПК через команду cat ~/.ssh/id_rsa.pub.
На экране будет отображена примерно такая строка: ssh-rsa + ключ в виде набора символов== demo@test. После этого перейдите к работе на удаленное устройство, где создайте новую директорию через mkdir -p ~/.ssh. В ней дополнительно создается файл authorized_keys. Далее вставьте туда ключ, который вы узнали ранее через echo + строка публичного ключа >> ~/.ssh/authorized_keys. После этого можно пробовать проводить аутентификацию с сервером без использования паролей.
ААутентификация на сервере через созданный ключ
В предыдущем разделе вы узнали о трех методах копирования ключа удаленного компьютера на сервер. Такие действия позволят подключиться без использования пароля. Выполняется эта процедура через командную строку путем ввода shh ssh username@remote_host, где username@remote_host — имя пользователя и хост нужного компьютера. При первом подключении вы будете уведомлены о незнакомом соединении и можете продолжить, выбрав вариант yes.
Подключение произойдет автоматически, если во время создания пары ключей не была задана ключевая фраза (passphrase). В противном случае сначала придется ввести ее, чтобы продолжить работу с SSH.
ООтключение аутентификации по паролю
Успешной настройка копирования ключей считается в той ситуации, когда удается войти на сервер без использования пароля. Однако возможность аутентификации таким образом позволяет злоумышленникам использовать инструменты для подбора пароля и взламывать защищенное соединение. Обезопасить себя от таких случаев позволит полноценное отключение входа по паролю в конфигурационном файле SSH. Для этого потребуется:
В «Терминале» откройте конфигурационный файл через редактор с помощью команды sudo gedit /etc/ssh/sshd_config.
Найдите строку «PasswordAuthentication» и уберите знак # в начале, чтобы раскомментировать параметр.
Измените значение на no и сохраните текущую конфигурацию.
Закройте редактор и перезапустите сервер sudo systemctl restart ssh.
Аутентификация по паролю отключится, и войти на сервер можно будет только с использованием специально созданных для этого ключей с алгоритмом RSA.
ННастройка стандартного firewall
В Убунту сетевой защитой по умолчанию выступает фаервол Uncomplicated Firewall (UFW). Он позволяет разрешать соединения для избранных сервисов. Каждое приложение создает свой профиль в этом инструменте, а UFW управляет ими, разрешая или запрещая подключения. Настройка профиля SSH путем добавления его в список осуществляется так:
Откройте список профилей firewall через команду sudo ufw app list.
Введите пароль от учетной записи для отображения информации.
Вы увидите лист доступных приложений, среди них должен находиться и OpenSSH.
Теперь следует разрешить соединения через SSH. Для этого добавим его в список разрешенных профилей с помощью sudo ufw allow OpenSSH.
Включите firewall, обновив правила, sudo ufw enable.
Для убеждения в том, что соединения разрешены, следует прописать sudo ufw status, после чего вы увидите состояние сети.
На этом наши инструкции по конфигурации SSH в Ubuntu завершены. Дальнейшие настройки конфигурационного файла и других параметров осуществляются лично каждым пользователем под его запросы. Ознакомиться с действием всех составляющих SSH вы можете в официальной документации протокола.