SSH (secure shell) - протокол для створення шифрованого з'єднання між клієнтом і сервером. Завдяки цій технології може здійснюватися віддалене управління комп'ютером. Взаємодія з утилітою відбувається в терміналі, а в операційну систему CentOS 7 вона додана за замовчуванням. Тому сьогодні ми б хотіли детально розглянути стандартну процедуру настройки, яка буде корисна всім, хто збирається працювати з SSH.
зміст
Процес конфігурації індивідуальний для кожного системного адміністратора, але все ж є кілька пунктів, корисних для всіх користувачів. В рамках даної статті ми поговоримо не тільки про серверної складової, а й про клієнтської, а також вкажемо, на якому з пристроїв виконується певна дія.
Ми вже сказали, що SSH за замовчуванням доданий в список системних бібліотек CentOS 7, але іноді з деяких причин необхідні компоненти відсутні на комп'ютері. У такому випадку їх потрібно додати, а потім активувати роботу сервера.
sudo yum -y install openssh-server openssh-clients
. sudo chkconfig sshd on
. service sshd start
. netstat -tulpn | grep :22
netstat -tulpn | grep :22
. Після успішного твори зазначених вище інструкцій можна сміливо переходити до початку конфігурації. Хочемо звернути вашу увагу, що обов'язково слід читати показання на екрані повідомлення під час активації команд. Вони можуть свідчити про виникнення певних помилок. Своєчасне виправлення всіх несправностей допоможе уникнути подальших проблем.
Звичайно, конфігураційний файл редагується тільки на розсуд системного адміністратора. Однак ми хочемо показати, як його запустити в текстовому редакторі і на які пункти слід зробити акцент в першу чергу.
sudo yum install nano
. По завершенні інсталяції запустіть конфігураційний файл через sudo nano /etc/ssh/sshd_config
. sudo service sshd restart
, щоб внесені зміни вступили в силу. service sshd status
. Редагуванням конфігураційного файлу змінюється багато параметрів, але основний процес - додавання і настройка ключів - проводиться за допомогою спеціальних команд, про що ми і хочемо поговорити далі.
Криптографічний алгоритм RSA (абревіатура від прізвищ Rivest, Shamir і Adleman) використовується сервісом SSH для створення пари ключів. Така дія дозволити максимально убезпечити клієнтську і серверну частину при проведенні з'єднань. Задіяти доведеться обидві ланцюга, щоб створити пару ключів.
ssh-keygen
. При успішному виконанні зазначеного вище керівництва з'являться відкритий і закритий ключ, які в подальшому будуть задіяні для аутентифікації з сервером. Однак для цього ключ потрібно передати на сервер і відключити вхід по паролю.
Як вже було сказано вище, копіювання ключа необхідно для подальшої безпарольного аутентифікації. Зробити таку дію можна одним з трьох способів, кожен з яких буде найбільш оптимальним в певних ситуаціях. Давайте розглянемо всі їх по порядку.
Утиліта ssh-copy-id
Копіювання відкритого ключа через утиліту ssh-copy-id - найпростіший метод. Однак підійде він тільки в тому випадку, коли на комп'ютері присутній цей самий інструмент. Вам же потрібно прописати всього одну команду ssh-copy-id username@remote_host
, де username @ remote_host - ім'я користувача і хост віддаленого сервера.
Якщо з'єднання проводиться вперше, на екрані ви побачите повідомлення подібного характеру:
The authenticity of host '111.111.11.111 (111.111.11.111)' 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
.
Залишилося тільки ввести пароль від облікового запису сервера, і на цьому процедура копіювання через згадану утиліту буде успішно завершена.
Копіювання відкритого ключа по SSH
При відсутності утиліти ssh-copy-id рекомендуємо задіяти стандартні можливості інструменту SSH, якщо, звичайно, у вас є доступ до серверної облікового запису. Вивантаження ключів проводиться за допомогою звичайного підключення, а саме:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
, де username @ remote_host - ім'я облікового запису та хоста віддаленого комп'ютера. Врахуйте, що опція >> додасть ключ в кінець файлу, а не перезапише його повністю. Тому введені раніше ключі теж будуть збережені. sudo service sshd restart
, щоб оновилися списки ключів. Ручне копіювання відкритого ключа
Іноді трапляються ситуації, коли неможливо використовувати утиліту ssh-copy-id, а також відсутній доступ по паролю. Тоді копіювання здійснюється вручну.
cat ~/.ssh/id_rsa.pub
. mkdir -p ~/.ssh
. Команда нічого не зробить, якщо каталог вже існує. echo public_key_string >> ~/.ssh/authorized_keys
додасть ключ в файл або створить спочатку файл, якщо він відсутній. Замість «public_key_string» потрібно вставити отриману раніше рядок з ключем. На цьому процедура копіювання ключа успішно завершена. Завдяки цьому тепер доступна аутентифікація до сервера шляхом введення ssh username@remote_host
. Однак підключитися можна і через пароль, що знижує безпеку такої мережі.
Відключення можливості входу по паролю, в обхід ключа, робить таке віддалене з'єднання менш захищеним. Тому рекомендується деактивувати цю функцію для запобігання несанкціонованого аутентифікації з боку зловмисників.
sudo nano /etc/ssh/sshd_config
. no
. sudo systemctl restart sshd.service
. На цьому стаття, в якій ви були ознайомлені з основними конфігураційними моментами протоколу SSH, добігає кінця. Настійно рекомендуємо вивчити вміст видачі після активації команд, оскільки там іноді містяться описи помилок. Їх рішення шукайте в офіційній документації інструменту або дистрибутива CentOS.