Як увімкнути ssh-з'єднання




Як увімкнути ssh-з'єднання



SSH: що це і як ним користуватися - гайд для новачків

Теоретичні основи з ілюстраціями та практика на GitHub.

Ілюстрація: Катя Павловська для Skillbox Media

Онлайн-журнал для тих, хто закоханий у код та інформаційні технології. Пишемо для айтішників і про айтішників.

Після реєстрації на GitHub ви отримуєте профіль із налаштованим HTTPS-з'єднанням. Це протокол для безпечного завантаження та скачування даних з віддаленого репозиторію. Однак не всі компанії надають перевагу HTTPS і з різних причин просять своїх розробників вибирати альтернативу — протокол SSH.

У статті ми познайомимося з SSH-з'єднанням і навчимося переналаштовувати профіль на GitHub. Перед практикою буде теоретичний блок, який би пояснював принципи роботи технології. Ви дізнаєтесь, як дані переходять із пристроїв на віддалені сервери і чому це безпечно.

Якщо ви починаєте використовувати GIt, рекомендуємо перед налаштуванням SSH-з'єднання почитати про GitHub.

Зі статті ви дізнаєтесь:

Дмитро Зайцев

Експерт

CTO Flocktory, програмний директор професії "DevOps-інженер" у Skillbox, директор програмного комітету DevOpsConf.

Що таке SSH і навіщо він створений

До використання SSH для віддаленого підключення був популярний протокол Telnet, відомий як Teletype Network. Він дозволяв запускати термінальні команди, передавати файли, оновлювати дані - тобто вирішував безліч завдань системного адміністрування. Однак Telnet був уразливий до атак, оскільки відкрито передавав дані та не захищав трафік від перехоплення. Причина: протокол з'явився 1969 року, коли інженери розгортали інтернет. Тоді масштабування було пріоритетнішим за безпеку.

Покажемо вразливість відкритої передачі на прикладах. Користувач надсилає незашифрований файл через Telnet.Якщо зловмисник відстежує вузли мережі , то зможе отримати доступ до вмісту файлу.

Користувач може зашифрувати файл перед надсиланням через Telnet. Однак якщо відправник і одержувач не зустрінуться особисто, то дешифрувальний ключ доведеться надсилати по мережі. Так зловмисник отримає файл та ключ до нього.

Схема відкритої передачі за протоколом Telnet
Ілюстрація: Оля Їжачок для Skillbox Media

На зміну Telnet прийшов SSH. SSH (Secure Shell – захищена оболонка) – це протокол прикладного рівня для віддаленого обміну даними між пристроями. Він заснований на взаємодії приватного та публічного ключів, які захищають трафік алгоритмом асиметричного шифрування.

Уявіть, першому користувачеві потрібно отримати файл від другого користувача. Він бере ключ і відкритий замок, а потім діє так: ключ залишає собі, а відкритий замок передає по мережі. Замок доходить до адресата і дістається зловмисникові. Файл із даними поки не передано.

Схема захищеної передачі за протоколом SSH. Частина 1
Ілюстрація: Оля Їжачок для Skillbox Media

Другий користувач закриває файл на замок і надсилає його назад. Закритий замок потрапляє до першого користувача та до зловмисника. Перший користувач відкриває замок своїм ключем та дістає файл. У зловмисника є відкритий та закритий замок, але без ключа він не зможе вийняти файл. Так сторони можуть безпечно обмінюватись даними.

Схема захищеної передачі за протоколом SSH. Частина 2
Ілюстрація: Оля Їжачок для Skillbox Media

У концепції SSH відкритий замок представляє публічний ключ або public key. Ключ від замку – приватний ключ, або private key. За допомогою публічного ключа ми шифруємо дані, а за допомогою приватного розшифровуємо. Без приватного ключа навіть власник даних не отримає доступу до них. Приватний ключ важливо берегти.

Реалізація SSH-протоколу в контексті клієнт-серверної взаємодії
Ілюстрація: Оля Їжачок для Skillbox Media

Якщо не спрощувати пояснення, то реалізація SSH-протоколу відбувається у кілька етапів. Це механізм, що включає встановлення захищеного з'єднання, автентифікацію і обмін даними між клієнтом і сервером.

  1. Клієнт відправляє серверу ID свого публічного ключа. Таким чином він заявляє, що має відповідний приватний ключ.
  2. Сервер шифрує публічним ключем випадкове повідомлення та відправляє клієнту. Клієнт повинен це повідомлення розшифрувати та надіслати у відповідь.
  3. Для перевірки аутентифікації клієнт повинен розшифрувати повідомлення та передати його у зашифрованому вигляді назад на сервер. Так він доведе, що справді має приватний ключ. Інакше запит буде відхилено.
  4. Клієнт та сервер домовляються про загальний секретний ключ. Безпечне узгодження такого ключа забезпечує криптопротокол Діффі-Хеллмана.
  5. Сторони обирають метод шифрування трафіку. Зараз часто використовують AES-256, AES-192 та AES-128 — вибір залежить від згоди сторін та налаштувань безпеки сервера. Однак алгоритми безпеки періодично оновлюються, тому важливо орієнтуватись на сучасний стандарт.

Після успішного проходження аутентифікації клієнт та сервер можуть безпечно обмінюватися даними зашифрованим каналом.

Реалізація SSH-протоколу в контексті клієнт-серверної взаємодії: експертна версія
Зображення: Майя Мальгіна для Skillbox Media

Як працює алгоритм шифрування SSH

За умовчанням SSH використовує алгоритм RSA. Це математична модель для реалізації шифрування даних за допомогою одного ключа та їх розшифрування за допомогою іншого. Перетворення будується за принципом роботи зворотної функції: функція зашифровує дані, а зворотна функція розшифровує.

Для кращого розуміння роботи зворотної функції розглянемо приклад із комплементарним підбором кольорів на колі Іттена. У колірному колі кожен колір має додатковий колір. Додатковий колір знаходиться на протилежному боці кола та відокремлений від основного кольору білою зоною. Приклади: червоний та зелений, жовтий та фіолетовий, помаранчевий та блакитний.

Схема комплементарного підбору кольорів на колі Іттена
Ілюстрація: Skillbox Media

Користувачі вирішили обмінятись квітами. Перший учасник вибирає колір та визначає його додатковий колір. Додатковий колір потрапляє до адресата та зловмисника. Про основний колір зловмисник не знає.

Схема роботи алгоритму шифрування SSH на прикладі кольору та зворотного кольору. Частина 1
Ілюстрація: Оля Їжачок для Skillbox Media

Другий користувач змішує додатковий колір зі своїм тим, що він хотів вислати у відповідь. Виходить новий колір - результуючий. Результуючий колір сягає адресата і дістається зловмиснику.

Схема роботи алгоритму шифрування SSH на прикладі кольору та зворотного кольору. Частина 2
Ілюстрація: Оля Їжачок для Skillbox Media

Перший користувач змішує результуючий колір зі своїм вихідним. Виходить колір, який передав другий користувач. У зловмисника є додатковий колір від першого користувача та результуючий від другого. Якщо він змішає свої кольори, то не впізнає загаданий колір.

Схема роботи алгоритму шифрування SSH на прикладі кольору та зворотного кольору: частина 3
Ілюстрація: Оля Їжачок для Skillbox Media

У алгоритмах шифрування відбуваються схожі процеси, але замість кольорів використовуються дані. Приватний ключ не зберігається на сервері, а публічний ключ можна пересилати через мережу. Якщо зловмисник перехопить публічний ключ, то зможе ним скористатися. Залишається випадково підібрати приватний SSH-ключ.Однак це малоймовірно, оскільки мова про довгий ланцюжок довільно згенерованих цифр і букв. Приклади будуть надалі.

Крім RSA зустрічаються й інші алгоритми для створення цифрових ключів:

Ed25519, DSA, EdDSA та інші. У 2024 році найчастіше використовують RSA та Ed25519.

Поговоримо про їхню різницю. RSA працює на будь-якій системі, але витрачає більше пам'яті та процесорного часу на створення та верифікацію ключів. Ed25519 ефективніший і менш ресурсоємний, проте працює не на всіх системах.

Більшість користувачів не помітять різниці між алгоритмами RSA та Ed25519. Тому рекомендую використовувати RSA на 3072 чи 4096 біт.

Як створити ключі шифрування

Якщо у вас є операційна система Linux або macOS, перейдіть в термінал . Якщо у вас Windows 10 і новіша версія — налаштуйте програму OpenSSH. Для старих версій Windows спробуйте PuTTY Generator або подібні утиліти.

У вибраній програмі введіть команду ssh-keygen. Система створить пару ключів і уточнить місце для їх збереження - за промовчанням буде запропоновано домашню директорію. Ключі додадуться до папки .ssh та отримають ім'я id_rsa.

Ви можете змінити ім'я ключа та місце збереження. Для цього необхідно перезаписати шлях, який пропонує система. Було: /Users/macbook/.ssh/id_rsa. Змінюємо ім'я ключа: /Users/macbook/.ssh/myKey. Після перезапису існуючий приватний ключ буде видалено та замінено на ключ з новим ім'ям. Разом з ним ви втратите доступ до серверів, на яких він був задіяний. Тому такий перезапис доречно робити тільки тоді, коли ви видаляєте ключ, що не використовується.

Для захисту існуючого ключа від перезапису можна використовувати прапор -f під час виклику команди ssh-keygen. Виглядатиме це так: ssh-keygen -f $HOME/.ssh/skillbox_private. У цьому випадку система запросить пароль для захисту приватного ключа та збереже його у зашифрованому вигляді.У папці .ssh з'являться ключі skillbox_private і skillbox_private.pub, а система повідомить про завершення операції. Після цього ви зможете використовувати нові ключі для доступу до серверів.

Наступний крок – парольна фраза, додатковий захід безпеки. Її створювати не обов'язково – для пропуску натисніть Enter. Все: ключі готові, у терміналі має з'явитися графіка під назвою технології шифрування.

Генеруємо ключі, пропускаємо парольну фразу та вибираємо запропоновану директорію
Скріншот: iTerm2 / Skillbox Media

Подивимося вміст папки .ssh. Для цього виконаємо декілька команд:

  • cd .ssh - Переходимо в папки .ssh;
  • ls -a - Виводимо список вмісту, включаючи приховані файли;
  • cat id_rsa - Дивимося на вміст приватного ключа.

⚠️ Увага: нижче на скріншоті приватний ключ показано для прикладу. Він ніде не використовується і вже вилучений. Нікому не показуйте цей ключ – від нього залежить безпека вашої інформації.

Фрагмент приватного SSH-ключа: набір не пов'язаних один з одним символів, які складно підібрати
Скріншот: iTerm2 / Skillbox Media

За допомогою команди cat id_rsa.pub можна подивитися публічний ключ - такий самий набір не пов'язаних символів, тільки менше. Цей ключ можна надсилати.

Ми розглянули базовий сценарій створення SSH-ключів. Однак іноді потрібно конкретизувати технологію шифрування та змінити розмір ключа. Ось команда: ssh-keygen -t-b.

Після прапорця -t ми пишемо потрібну технологію, а після -b - Новий розмір ключа. Далі діємо за базовим сценарієм: вибираємо директорію для збереження ключів та додаємо парольну фразу, якщо вона вам потрібна.

Приклад конкретизованого SSH-ключа: змінюємо технологію шифрування rsa на ed25519 та збільшуємо розмір ключа з 3072 до 4096 біт
Скріншот: iTerm2 / Skillbox Media

У папці .ssh можна зберігати різні SSH-ключі.

Приклад SSH-ключів, згенерованих за конкретизованим запитом
Скріншот: iTerm2 / Skillbox Media

Як настроїти SSH на GitHub

Вводимо до терміналу команду ssh [email protected]. Якщо це ваше перше підключення до GitHub, то термінал запропонує додати сайт до списку довірчих хостів. Після цього ви побачите повідомлення про наявність або відсутність доступних SSH-ключів. Поки що публічні ключі нам недоступні.

Додаємо github.com до списку довірених хостів та переконуємось у відсутності публічних ключів
Скріншот: iTerm2 / Skillbox Media

Переходимо на github.com і виконуємо такі кроки:

  • створюємо обліковий запис, якщо його немає;
  • у налаштуваннях профілю вибираємо підрозділ "SSH and GPG keys";
  • клацаємо на кнопку "New SSH key" і вставляємо в поле публічний ключ;
  • додаємо до публічного ключа короткий довільний опис;
  • клацаємо на "Add SSH key" і вводимо пароль від облікового запису, якщо потрібно.

Публічні ключі не можна описувати. Це зручно, якщо у вас є кілька ключів для різних проектів. За описом простіше знаходити потрібний ключ.

Додаємо публічний SSH-ключ і називаємо його myKey
Скріншот: GitHub / Skillbox Media

Знову введемо в терміналі команду ssh [email protected]. Якщо публічний ключ додано, то GitHub розпізнає та привітає нас на ім'я у профілі.

Аутентифікацію пройдено, GitHub бачить наш профіль
Скріншот: iTerm2 / Skillbox Media

Після додавання публічного ключа можна зв'язуватися з віддаленими репозиторіями за протоколом SSH замість HTTPS. Більше не потрібно постійно вводити логін та пароль, що спрощує та прискорює роботу з GitHub.

Аутентифікацію пройдено, GitHub бачить наш профіль
Скріншот: GitHub / Skillbox Media

Якщо в процесі налаштування у вас виникнуть питання, складності або просто захочеться більше дізнатися про SSH більше - подивіться документацію на GitHub.

GitHub та деякі інші сервіси не працюють за паролем. Однак для віддаленого підключення до сервера пароль потрібен, але його можна замінити SSH.

Щоб настроїти з'єднання SSH, виконайте перше підключення до сервера — введіть логін та пароль. Введіть команду ssh-copy-id user@host та повторіть пароль:

  • ssh – запит на встановлення захищеного з'єднання;
  • user - вводимо виданий логін;
  • host – адреса віддаленого сервера. Тут може бути як IP-адреса, так і хост з певним доменним ім'ям.

З'єднання SSH встановлено, і можна входити на вказаний сервер без пароля.

UNIXS.RU

Сайт присвячено системному адмініструванню та способам вирішення різноманітних проблем, які можуть виникнути в процесі експлуатації операційних систем, у тому числі дуже рідкісних та складних.

Як увімкнути та настроїти SSH-сервер у Windows за допомогою OpenSSH

SSH-сервер заснований на OpenSSH пакет є частиною операційної системи у всіх сучасних версіях Windows. У цій статті ми покажемо вам, як встановити та налаштувати сервер OpenSSH на Windows 10/11 та Windows Server 2022/2019 та підключитися до нього віддалено через захищене SSH-з'єднання (як у Linux 🙂 ).

Як встановити OpenSSH Server у Windows

Пакет OpenSSH Server входить до складу всіх сучасних версій Windows 10 (починаючи з 1803), Windows 11 та Windows Server 2022/2019 як Функція на вимогу (FoD). Щоб встановити сервер OpenSSH, відкрийте запрошення PowerShell і виконайте команду:

Get-WindowsCapability-Online | Where-Object Name -like ‘OpenSSH.Server*’ | Add-WindowsCapability –Online

Або за допомогою DISM:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

Якщо ваш комп'ютер безпосередньо підключений до Інтернету, пакет OpenSSH.Server буде завантажено та встановлено на Windows.

Ви також можете встановити OpenSSH на Windows 10/11 за допомогою сучасних Налаштування панель (Параметри -> Програми та функції -> Додаткові функції -> Додати функцію). Знайдіть Відкрити SSH-сервер у списку та натисніть Встановити.

Ви також можете встановити засоби віддаленого адміністрування сервера (RSAT) звідси.

На комп'ютері у від'єднаних (автономних) середовищах можна встановити сервер OpenSSH з розділу Feature on Demand ISO образ (доступний у вашому обліковому записі на сайтах Microsoft: MSDN або my.visualstudio.com). Завантажте ISO та вийміть його в папку E:\FOD (можна витягти лише файл OpenSSH-Server-Package~31bf3856ad364e35~amd64~~.cab ) та встановіть функцію Windows із локального сховища:

Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source E:\FOD

Інсталятор MSI для OpenSSH для Windows також доступний в офіційному репозиторії Microsoft на GitHub (https://github.com/PowerShell/Win32-OpenSSH/releases/). Наприклад, для Windows 10 x64 необхідно завантажити та встановити файл OpenSSH-Win64-v8.9.1.0.msi пакет. Наступна команда PowerShell завантажить MSI-файл і встановить клієнт та сервер OpenSSH на ваш комп'ютер:

Invoke-WebRequest https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.9.1.0p1-Beta/OpenSSH-Win64-v8.9.1.0.msi -OutFile $HOME\Downloads\OpenSSH-Win64 -v8.9.1.0.msi -UseBasicParsing
msiexec /i $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi

Ви можете інсталювати сервер OpenSSH і в попередні версії Windows (Windows 8.1, Windows Server 2016/2012R2/2012). Перегляньте приклад установки та налаштування Win32-OpenSSH у статті "Як налаштувати SFTP-сервер (SSH FTP) у Windows?".

Щоб переконатися, що сервер OpenSSH встановлено, виконайте команду:

Get-WindowsCapability-Online | ? Name -like 'OpenSSH.Ser*'

Налаштування SSH-сервера у Windows

Після встановлення сервера OpenSSH у Windows додаються дві служби:

  • ssh-agent (Агент аутентифікації OpenSSH) - може використовуватися для керування закритими ключами, якщо ви налаштували аутентифікацію за допомогою ключів SSH;
  • sshd (OpenSSH SSH Server).

Вам потрібно змінити тип запуску служби sshd на автоматичний і запустити службу за допомогою PowerShell:

Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd


За допомогою команди netstat переконайтеся, що SSH-сервер запущений і чекає на підключення по TCP-порту 22:
netstat -na | find ":22"

Переконайтеся, що брандмауер Windows Defender дозволяє вхідні з'єднання з Windows через TCP-порт 22:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled ---- ----------- ----------- ------- OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

Якщо правило вимкнено (Enabled=False) або відсутня, ви можете створити нове вхідне правило за допомогою команди New-NetFirewallRule:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

За промовчанням ключові компоненти OpenSSH знаходяться в цих папках:

  • Виконувані файли сервера OpenSSH: C: Windows System32 OpenSSH (sshd.exe, ssh.exe, ssh-keygen.exe, sftp.exe і т. д.)
  • Сайт sshd_config файл (створюється після першого запуску служби): C:\ProgramData\ssh
  • Файл authorized_keys та ключі можна зберігати у папці профілю користувача: %USERPROFILE%\.ssh\

Sshd_config: Файл конфігурації сервера OpenSSH

Ви можете змінити налаштування сервера OpenSSH у файлі конфігурації: %programdata%\ssh\sshd_config . Це звичайний текстовий файл із набором директив. Для редагування можна використовувати будь-який текстовий редактор:

start-process notepad C:\Programdata\ssh\sshd_config

Наприклад, щоб заборонити з'єднання SSH для певного облікового запису користувача домену (або всіх користувачів зазначеного домену), додайте ці директиви в кінець файлу:

DenyUsers woshub\[email protected] DenyUsers corp\*

Щоб дозволити SSH-з'єднання лише для певної групи безпеки домену:

AllowGroups woshub\sshadmins

Ви можете дозволити доступ локальній групі користувачів:

AllowGroups sshadmins

За промовчанням усі користувачі Windows можуть підключатися до OpenSSH. Директиви у файлах sshd_config обробляються так: DenyUsers, AllowUsers, DenyGroups, AllowGroups.

Ви можете заборонити вход SSH для облікових записів з правами адміністратора. У разі, якщо вам необхідно виконати будь-які привілейовані дії в SSH-сесії, вам доведеться використовувати runas.

DenyGroups Administrators

Наведені нижче директиви дозволяють отримати доступ до Windows за допомогою закритих ключів SSH або пароля.

PubkeyAuthentication yes PasswordAuthentication yes

Ви можете змінити порт TCP/22 за умовчанням, на якому приймаються з'єднання OpenSSH Server, у конфігураційному файлі sshd_config за допомогою директиви Порт директиви.

Після внесення змін до файлу sshd_config необхідно перезапустити службу sshd

Як підключитися до віддаленого комп'ютера Windows через SSH?

Тепер ви можете спробувати підключитися до комп'ютера з Windows 10 за допомогою SSH клієнта (в даному прикладі я використовую putty).

Ви можете використовувати вбудований SSH-клієнт Windows для підключення до віддаленого хоста. Для цього відкрийте командний рядок та виконайте наступну команду:

ssh [email protected]

У цьому прикладі, max це ім'я користувача на віддаленому комп'ютері Windows, а 192.168.13.12 це IP-адреса або DNS-ім'я комп'ютера.

Зверніть увагу, що при підключенні до Windows через SSH можна використовувати такі формати користувачів.

  • max@server1 - локальний користувач Windows
  • [email protected]@server1 — Користувач Active Directory або обліковий запис Microsoft/Azure (використовуйте формат UserPrincipalName)
  • woshub\max@server1 - Формат імен NetBIOS

У домені Active Directory можна використовувати автентифікацію Kerberos у SSH. Для цього необхідно включити наступну директиву до sshd_config:

GSSAPIAauthentication yes

Тепер ви можете прозоро підключатися до SSH-сервера із підключеною до домену машини Windows із сесією користувача домену. У цьому випадку пароль користувача не буде запитуватися, а SSO-автентифікація через Kerberos буде виконана:
ssh -K server1

При першому підключенні вам буде запропоновано додати хост до списку відомих хостів SSH (C:\Users\your_user\.ssh\known_hosts).

Натисніть Yes і увійдіть до свого облікового запису користувача Windows.

Якщо з'єднання SSH пройшло успішно, ви побачите запрошення оболонки cmd.exe.

admin@win10pc C:\Users\admin>

У командному рядку SSH можна запускати різні команди, сценарії та програми.

Я волію працювати в консолі PowerShell. Щоб запустити її, виконайте:

Щоб змінити стандартну оболонку cmd.exe в OpenSSH на PowerShell, внесіть зміни до реєстру за допомогою наступної команди PowerShell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

Перезапустіть SSH-з'єднання і переконайтеся, що PowerShell тепер використовується як оболонка SSH за промовчанням (на це вказує підказка PS C:\Users\admin> ).

У моїй SSH-сесії запущено запрошення PowerShell, в якому працюють звичайні функції: автозаповнення вкладок, підсвічування синтаксису PSReadLine, історія команд тощо. Якщо поточний користувач входить до групи локальних адміністраторів, то всі команди сеансу виконуються з підвищеним рівнем доступу, навіть якщо включений UAC.

Сервер OpenSSH під Windows може бути використаний у різних сценаріях тунелювання SSH.

Перевірка журналів з'єднань SSH у Windows

За промовчанням у Windows журнали з'єднань SSH-серверів записуються над текстові файли, а окремий журнал подій через Event Tracing for Windows (ETW). Відкрийте консоль Event Viewer (eventvwr.msc) та перейдіть за адресою Журнали додатків та служб -> OpenSSH -> Оперативна.

При успішному підключенні до SSH-сервера з використанням пароля в журналі з'явиться відповідна подія:

EventID: 4 sshd: Відправлено password for root from 192.168.1.53 port 65749 ssh2

Якщо була виконана автентифікація ключа SSH, ви побачите таку подію:

sshd: Відправлений publickey для locadm від 192.168.1.53 port 61426 ssh2: ED25519 SHA256:FEHDEC/G42FS23209C2KMb4335923pigN31s3qMK322lGibD

Якщо ви хочете, щоб журнали з'єднань SSH записувалися в локальний текстовий файл, вам потрібно ввімкнути наступні параметри у полі sshd_config файл:

SyslogFacility LOCAL0 LogLevel INFO

Перезапустіть службу sshd і переконайтеся, що журнали сервера SSH тепер записуються у звичайний текстовий файл C:\ProgramData\ssh\logs\sshd.log

Ви можете використовувати безпечне SSH з'єднання з PSRemoting для керування віддаленими комп'ютерами через WinRM.

SSH для новачків

Програмістів, сисадмінів, devops'ів, тестувальників часто поєднує використання деяких загальних технологій. Наприклад, можливість мати віддалений доступ до сервера знадобилося б будь-якому із зазначеної вище анекдотичної компанії. Тому в цій статті ми розглянемо основи роботи з протоколом SSH на базовому рівні (без створення ключів, підписів, мам, тат і кредитів). "Просунуте" використання подивимося вже окремо, наступного разу. Матеріал підготував Макс, автор YouTube-каналу PyLounge. Поїхали!

Вступ

SSH (Secure SHell – захищена оболонка) - мережевий протокол прикладного рівня, призначений для безпечного віддаленого доступу до різних систем (Linux, Windows, Mac).

Цей протокол шифрує всю інформацію, що передається по мережі. За замовчуванням використовується 22-й порт. В основному він потрібен для віддаленого керування даних користувача на сервері, запуску службових команд, роботи в консольному режимі з базами даних.

Ця служба була створена як заміна не зашифрованого Telnet і використовує криптографічні техніки, щоб забезпечити, що все повідомлення між сервером і користувачем було зашифровано.

Щоб встановити SSH-з'єднання, потрібні два компоненти: SSH-сервер і SSH-клієнт. Сервер прослуховує певний порт (за замовчуванням це порт 22) і за успішної аутентифікації дає доступ користувачеві. Усі команди, які використовуються на SSH-клієнті, відправляються через захищений канал зв'язку на SSH-сервер, на якому вони виконуються і звідки надсилають результат роботи клієнту.

SSH-сервер

Встановлюється на керованій операційній системі та приймає вхідні підключення від клієнтських машин, перевіряючи з'єднання одним із способів:

  • за IP-адресою клієнта, що не надто безпечно через ризик підміни;
  • за публічним ключем клієнта та імені користувача. Потрібно створити приватний (закритий) та публічний (відкритий) ключ. Зашифрувавши інформацію одним ключем, можна розшифрувати її лише іншим;
  • за паролем клієнта, який передається у зашифрованому вигляді. Це один із найпоширеніших варіантів. Вводити його потрібно при кожному підключенні.

Платні та безкоштовні SSH-сервери є для всіх поширених ОС:

  • BSD - OpenSSH;
  • Linux - dropbear, lsh-server, openssh-server;
  • Windows - freeSSHd, copssh, WinSSHD, OpenSSH і т.д. буд.

SSH-клієнт

Використовується для входу на віддалений сервер та виконання команд. Через клієнт виконується керування віддаленим комп'ютером.

SSH-клієнти розроблені всім ОС. Мають платні та безкоштовні версії:

  • Linux/BSD - openssh-client, putty, ssh, Vinagre;
  • Windows - PuTTY, SecureCRT, ShellGuard;
  • Android - connectBot.

Вбудований SSH-клієнт Windows, заснований на OpenSSH, встановлено в ОС, починаючи з Windows 10 1809.

Встановлення OpenSSH на Ubuntu

Встановлення за допомогою менеджера пакетів apt-get:

sudo apt-get install openssh-server

Перевірка SELinux

Security Enhanced Linux або SELinux – це вдосконалений механізм контролю доступу, вбудований у більшість сучасних дистрибутивів Linux. Спочатку він був розроблений Агентством національної безпеки США для захисту комп'ютерних систем від вторгнення зловмисників та злому. SELinux також може перешкодити роботі з ssh. Тому необхідно переконатися, що він вимкнений або відключити його.

Встановлюємо дод. інструменти для роботи з мережею та налаштуваннями безпеки:

sudo apt-get install policycoreutils sudo apt-get install net-tools

Перевіряємо статус SELinux. Стан повинен бути disable.

Підключення до віртуальної машини з типом підключення NAT

Якщо віртуальна машина використовує тип підключення NAT, то спочатку необхідно налаштувати прокидання портів. Прокинемо порт хоста 2222 (або будь-який вільний) на гостьовий порт віртуальної машини номер 22 (порт ssh за замовчуванням).

Після цього ми можемо підключитися з Windows до нашої віртуальної машини.

Підключення через ssh через PuTTY

Т.к. як мережне підключення у віртуальної машини використовується NAT, при підключенні ми будемо вказувати петлеву адресу localhost (127.0.0.1) з портом, на який було призначено прокидання.

Після цього вводимо ім'я користувача (користувач повинен існувати в linux.) та пароль від цього користувача.

Підключення через ssh через Командний рядок Windows (cmd)

Запускаємо командний рядок поєднанням клавіш Win + R. У вікні вказуємо cmd. Натискаємо Добре.

Загалом відео підключення по ssh має вигляд:

ssh ім'я_користувача@ip_адреса_комп'ютера_до_якого_підключаємося -p порт

Якщо для підключення використовується стандартний порт ssh-22, то порт можна не вказувати.

У вікні вводимо команду:

ssh [email protected] -p 2222

Вводимо пароль користувача. Все. Ви чудові!

Підключення до віртуальної машини з типом підключення.

З типом підключення Мережевий міст необхідно видати статичний IP для Linux системи. Подальше підключення буде вже по цьому виданому ip, а не через localhost.

Встановлення статичного IP

Починаючи з випуску Ubuntu 17.10 NetPlan тепер це інструмент налаштування мережі за промовчанням для керування налаштуваннями мережі, який замінює файл конфігурації /etc/network/interfaces , який використовувався в попередніх версіях.

Файли конфігурації для Netplan знаходяться у каталозі /etc/netplan та написані мовою YAML. У цьому каталозі ви знайдете конфігураційні файли YAML.

Відкриємо конфігураційний файл:

sudo nano /etc/netplan/*.yaml

Відредагуємо конфігураційний файл:

network: version: 2 renderer: NetworkManager ethernets: enp0s3: dhcp4: false addresses: [10.40.0.224/24] gateway4: 10.40.0.1 nameservers: addresses: [10.2.0.8, 10.2.0.
  • ethernets - вказує на дротове Ethernet підключення;
  • enp0s3 - ім'я мережного інтерфейсу (можна дізнатися командою ifconfig);
  • dhcp4 – автоматична видача ipv4-адреси за допомогою служби dhcp (для ipv6 вказувати dhcp6);
  • addresses - ip-адреса та маска мережі, які призначаються комп'ютеру;
  • gateway4 – шлюз за замовчуванням;
  • nameservers – список dns-серверів.

Подивитися налаштування можна з хостової машини на Windows за допомогою команди ipconfig /all.

Щоб застосувати зміни та перезавантажити мережу, вводимо команду:

sudo netplan apply

Підключення по ssh

Запускаємо командний рядок поєднанням клавіш Win + R. У вікні вказуємо cmd. Натискаємо Добре.

У вікні вводимо команду:

ssh [email protected]

Вводимо пароль користувача. Все. Ви чудові (2)!

Висновок

Незважаючи на високий захист протоколу, використання стандартного порту значно підвищує ризик злому сервера. Наприклад, це можна зробити за допомогою brute-force (Атака повним перебором). Порт 22 – відкритий, тому зловмиснику потрібно лише підібрати логін та пароль до сервера.Це складно, але можливо. Щоб максимально обмежити доступ до сервера для зловмисників (налаштувати брандмауер, iptables), можна змінити порти SSH.

Ресурси, які використав

  1. Як увімкнути SSH в Ubuntu 20.04 (Routerus):https://routerus.com/how-to-enable-ssh-on-ubuntu-20-04/
  2. Коротко про SSH / Хабр: https://habr.com/ru/sandbox/166705/
  3. Що таке SSH (блог REG.RU): https://help.reg.ru/support/hosting/dostupy-i-podklyucheniye-panel-upravleniya-ftp-ssh/chto-takoye-ssh

Схожі статті

  • Як увімкнути поєднання клавіш у Windows 7
  • Як увімкнути креатив у майнкрафті за допомогою клавіш
  • Як увімкнути кондиціонер на Datsun on do
  • Чи можна увімкнути DLSS у будь-якій грі
  • Як увімкнути відео з телефону на комп'ютер
  • Яке поєднання клавіш запустити презентацію з поточного слайду
  • Як увімкнути ліхтарик на повідомлення
  • Як увімкнути перевірку драйверів Windows 10
  • Недавні статті

  • Як бродить зернова брага
  • Що робити якщо не засмагаєш на сонці чому засмага погано лягає на шкіру або перестає прилипати
  • Як швидко зняти гель лак без апарату
  • Як робиться Каті голови
  • Яка гребінець краще для об'єму
  • Чим роблять м'яку покрівлю
  • Чи можна залишати крем для обличчя на ніч
  • Де знаходиться датчик селектора
  • географія нашої діяльності
    вулиця Драгоманова, 27
    вул. Курчатова 1Б
    вул. Міцкевича 130
    вул. Лабунського, 1
    вул. Макарова-Пржевальського
    вул. Толстого 10
    вул. Грушевського 28
    вул. Перший промінь (Черняхівського)
    напишіть нам

    сообщение успешно отправлено
    x