Використання SSH для безпечного використання підключення віддаленого робочого стола до Windows
Робоче середовище
- Віддалене підключення до Windows
-
- Вікна 11
- Віддалене підключення з Windows
-
- Вікна 10
- OpenSSH
-
- OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
Передумови
- Віддалене підключення до Windows
-
- Windows 10 або новішої версії (потрібна версія Pro або інша). Однак це не застосовується, якщо OpenSSH можна підготувати окремо.
- Windows Server 2019 або пізнішої версії. Однак це не застосовується, якщо OpenSSH можна підготувати окремо.
- Віддалене підключення з Windows
-
- Windows (можлива більшість версій)
- Windows Server (можлива більшість версій)
Спочатку
Після створення середовища Windows в Інтернеті в хмарі або VPS ви часто використовуєте підключення до віддаленого робочого столу для роботи віддаленого призначення Windows.
При підключенні до віддаленого робочого столу вміст зв'язку шифрується, і якщо ім'я користувача та пароль не розкрито, інші не зможуть увійти в систему без дозволу. Завжди є побоювання, що люди спробують увійти в систему з будь-якого місця.
Деякі великі хмари мають брандмауери, відокремлені від віртуальних машин, і є функція обмеження джерела з'єднання. Ці функції можуть бути доступні не в усіх сервісах. Особливо в середовищах, побудованих з низьким бюджетом, є багато випадків, коли такі функції недоступні.
Тому цього разу хотілося б максимально обмежити джерело підключення, додавши функцію SSH . Оскільки використовується закритий ключ і відкритий ключ, до тих пір, поки приватний ключ не витік, можливість віддаленого входу з іншого середовища може бути максимально зведена до мінімуму.
У цьому випадку ми будемо використовувати OpenSSH для збірки середовища SSH.
Створення віддаленого середовища Windows
Створіть середовище Windows, яке дозволяє віддалено підключатися через Інтернет. Не має значення, де він побудований, якщо він йде через Інтернет, але для цієї перевірки він буде побудований як віртуальна машина на Microsoft Azure. Кроки для створення на Azure не мають відношення до цієї поради, тому я їх опустив. Оскільки цього разу буде використовуватися порт 22, якщо ви використовуєте Azure, переконайтеся, що зв'язок з портом 22 проходить через налаштування віртуальної машини в Azure.
Якщо ви створюєте в середовищі, відмінному від Azure, переконайтеся, що ви можете підключити віддалений робочий стіл до Windows для свого середовища.
Крім того, версія для Windows націлена на Windows 10 або новішу версію або Windows Server 2019 або новішу версію, що спрощує створення середовища OpenSSH. Його можна реалізувати в більш ранньому середовищі, але це займає трохи більше часу і сил, тому що потрібно завантажувати і налаштовувати OpenSSH окремо.
У цьому випадку процедура така сама, як і для SFTP, тому, будь ласка, зверніться до наступних порад.
Налаштування OpenSSH
Звідси ми будемо працювати у віддаленому середовищі Windows. Спочатку підключіться до віддаленого місця призначення за допомогою підключення до віддаленого робочого стола. Якщо у вашій хмарі або VPS є консоль, ви можете використовувати її. Оскільки цього разу ми працюємо в середовищі Windows 11, в інших версіях кроки можуть дещо відрізнятися.
Відкрийте меню «Пуск» і виберіть «Налаштування».
Виберіть додаток.
Виберіть Додаткові функції.
Виберіть Показати функції.
Трохи нижче в списку знаходиться "OpenSSH Server", тому поставте галочку навпроти нього і натисніть "Далі".
Натисніть Встановити.
Коли інсталяція завершена і "OpenSSH Server" буде додано до списку нижче, все готово.
Налаштування служби для OpenSSH
Клацніть правою кнопкою миші меню «Пуск» і виберіть «Керування комп'ютером».
Виберіть Послуги зі списку ліворуч.
Знайдіть «OpenSSH SSH Server» в середньому списку, клацніть правою кнопкою миші і виберіть «Властивості».
При віддаленому підключенні ми хочемо, щоб сервер OpenSSH був запущений, тому встановіть для параметра "Тип запуску" значення "Автоматично".
Так як на даний момент він не запущений, я заведу його тут, в тому числі і налаштую.
Після запуску натисніть кнопку OK, щоб закрити його. Він повинен бути запущений у списку.
Налаштування OpenSSH
У початковому стані аутентифікація за приватним ключем вимкнена, тому встановіть її. Відкрийте наступну папку в Провіднику.
- C:\ProgramData\ssh
Однак вищевказана папка може бути прихованою, тому, будь ласка, зробіть її видимою, встановивши параметри провідника.
У папці sshd_config
є файл, який викликається, тому відкрийте його за допомогою текстового редактора, наприклад Блокнота.
Оскільки цього разу ми будемо вносити зміни, будь ласка, скопіюйте та скопіюйте їх як резервну sshd_config_old
копію перед зміною.
PubkeyAuthentication yes
Шукати:
За допомогою цього пункту можна визначити, чи слід вмикати розпізнавання за секретним ключем.
За замовчуванням він вимкнений, і на ньому написано , але він закоментований, yes
тому розкоментуйте його.
Перед зміною
#PubkeyAuthentication yes
Після зміни
PubkeyAuthentication yes
PasswordAuthentication yes
Шукати:
За допомогою цього пункту можна визначити, чи слід вмикати розпізнавання за допомогою пароля.
Він увімкнений за замовчуванням, і навіть якщо ви ввімкнете розпізнавання за приватним ключем, це безглуздо з точки зору безпеки, якщо він залишається увімкненим, тому розкоментуйте його та no
встановіть .
Перед зміною
#PasswordAuthentication yes
Після зміни
PasswordAuthentication no
Прокоментуйте наступний рядок ближче до кінця: Це ключове налаштування для групи адміністраторів, і ми вимкнемо його, оскільки в цьому випадку ми підтримуватимемо вхід для кожного користувача.
Перед зміною
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Після зміни
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Зберігши файл після OpenSSH SSH Server
зміни, перезапустіть службу, щоб відобразити налаштування.
Якщо ви хочете змінити порт
Якщо ви хочете змінити порт SSH, змініть наведені нижче дії.
Перед зміною
#Port 22
Після зміни
#Port <任意の番号>
Змінивши номер порту, порт за замовчуванням не буде атакований, що призведе до посилення безпеки. З іншого боку, це збільшує складність операції, тому потрібно бути обережним.
Якщо ви змінюєте номер порту, під час підключення необхідно вказати порт, відмінний від 22.
Створення приватних і публічних ключів
Це завдання на стороні клієнта. Однак насправді не має значення, де ви працюєте. Однак будьте обережні, щоб не розкрити створений вами приватний ключ.
Якщо у вас Windows 10 або новішої версії, Windows Server 2019 або новішої версії, клієнт OpenSSH інстальовано за замовчуванням, тому його можна легко створити за допомогою команди. В інших середовищах вам потрібно буде встановити окремий клієнт OpenSSH або скористатися окремим інструментом.
Наступні поради стосуються SFTP, але, будь ласка, зверніться до них для налаштування клієнта OpenSSH.
У клієнтському середовищі запустіть командний рядок, PowerShell, термінал або будь-який інструмент, який може виконувати команди.
Оскільки ви будете створювати файл, перейдіть cd
до будь-якого каталогу за допомогою команди.
Виконайте наступну команду:
ssh-keygen -t rsa -f id_rsa
Ви можете встановити пароль (пароль) для ключа, тому, будь ласка, введіть його, якщо це необхідно. Якщо ви встановите парольну фразу, безпеку буде покращено, але це збільшить час і зусилля на введення парольної фрази під час подальшого процесу.
Створено відкритий ключ (id_rsa.pub) і закритий ключ (id_rsa).
Відкритий ключ (id_rsa.pub) буде розміщено на віддаленому місці призначення пізніше. Закритий ключ може знаходитися в будь-якому місці віддаленого клієнта, але він повинен знаходитися в папці, доступ до якої може отримати тільки той обліковий запис, який використовується в цілях безпеки. В принципі, я думаю, що немає проблем, якщо ви помістите його в наступну папку на стороні клієнта. Якщо ви користуєтеся клієнтом OpenSSH, він буде переходити до цієї теки за замовчуванням.
C:\Users\<ユーザー名>\.ssh
Якщо ви не можете створити вищевказану папку в Провіднику, ви можете створити її за допомогою наступної команди.
cd C:\Users\<ユーザー名>
mkdir .ssh
Розміщення відкритих ключів
Це дистанційна операція.
Розмістіть створений відкритий ключ (id_rsa.pub) на віддаленому місці призначення.
Перемістіть цей файл до наступної папки: <ユーザー名>
– це ім'я облікового запису користувача, до якого ви входитимете під час віддаленого підключення.
C:\Users\<ユーザー名>\.ssh
Якщо у вас немає папки та ви не можете створити папку в Провіднику, ви можете створити папку за допомогою наведеної нижче команди.
cd C:\Users\<ユーザー名>
mkdir .ssh
Змініть розгорнутий файл authorized_keys
відкритого ключа на . Ось і все.
Залежно від середовища, файл може бути вже authorized_keys
наявним. Це може статися, якщо ви налаштували SSH-з'єднання для інших цілей.
У цьому випадку authorized_keys
ви зареєстрували файл, відкривши файл і файл за допомогою Блокнота тощо та id_rsa.pub
перерахувавши вміст id_rsa.pub у наступному рядку authorized_keys.
У authorized_keys можна зареєструвати кілька відкритих ключів.
Підключення за допомогою SSH
При підключенні за допомогою команди OpenSSH
Існують різні способи підключення за допомогою SSH, але почнемо з командного з'єднання. По суті, зв'язок з найменшою кількістю кроків відбувається по команді. Обов'язковою умовою має бути встановлений клієнт OpenSSH.
Запустіть вибраний вами інструмент команд (Командний рядок, PowerShell, Термінал).
Введіть наступну команду:
Формат команди
ssh -i <秘密鍵ファイルパス> -L <ローカルの空いているポート>:127.0.0.1:3389 <接続先のユーザーアカウント名>@<接続先サーバーIPアドレス、またはホスト名>
Нижче наведено пояснення параметрів. Налаштуйте його відповідно до вашого оточення.
параметра змінноїОпис назви | ||
---|---|---|
ssh | Оголошення для використання SSH з OpenSSH. | |
-я | Оголошення для використання файлу закритого ключа. | |
< шлях до файлу закритого ключа> | ● | Опишіть розташування створеного файлу закритого ключа. C:\Users\<ユーザー名>\.ssh Шлях необов'язковий. В іншому випадку потрібен абсолютний або відносний шлях. |
-Л | Це оголошення визначає порт, який буде використовуватися локально і віддалено при з'єднанні з віддаленим пунктом призначення. | |
< місцевий безкоштовний порт> | ● | Підключення до віддаленого робочого стола зазвичай використовує порт 3389, але підключитися можна за допомогою будь-якого порту. Неважливо, який це номер, головне, щоб він був вільним. |
127.0.0.1 | Це IP-адреса хоста, яка розпізнає, звідки підключено віддалений пункт призначення. В принципі, 127.0.0.1 цілком підходить. | |
3389 | Номер порту, який буде використовуватися у віддаленому пункті призначення. Віддалений пункт призначення зазвичай з'єднується портом 3389 з підключенням до віддаленого робочого стола, тому його можна залишити без змін. | |
< ім'я облікового запису користувача, до якого потрібно підключитися> | ● | Вкажіть, до якого облікового запису ви хочете підключитися у віддаленому пункті призначення. |
< IP-адресу або ім'я хоста сервера, до якого потрібно підключитися> | ● | Визначає віддалений сервер призначення. |
Приклад вхідних даних
ssh -i id_rsa -L 13389:127.0.0.1:3389 TestUser@52.140.221.194
Перший раз вам буде запропоновано ввести клавішу, тому yes
введіть і натисніть Enter.
Якщо у вас встановлено парольну фразу для вашого закритого ключа, ви повинні її ввести.
Наступне буде в підключеному стані. Ви можете побачити, що відображається користувач на стороні сервера, а не клієнт. Поки це вікно відображається, воно підключене, тому, будь ласка, не закривайте його. Якщо його закрити, то зв'язок обірветься.
При підключенні до PuTTY
Тут ми спробуємо підключитися до SSH за допомогою інструменту під назвою PuTTY.
Конвертація приватного ключа
По-перше, якщо ви використовуєте PuTTY, вам потрібно буде конвертувати приватний ключ. Я думаю, що в доданому інструменті є "puttygen .exe", тому, будь ласка, запустіть його.
Виберіть у меню "Conversions -> Import key".
Виберіть створений вами приватний ключ, в даному випадку «id_rsa».
Якщо ви встановили парольну фразу, введіть її.
Виберіть у меню «Файл -> Зберегти приватний ключ».
「. .ppk».
Після створення все готово.
Налаштування PuTTY
Запустіть шпаклівку.exe.
Введіть IP-адресу середовища, до якого ви хочете підключитися. Якщо у вас є домен, ви можете підключитися за допомогою доменного імені.
Виберіть пункт Підключення -> Дані в меню ліворуч. У полі Ім'я користувача для автоматичного входу введіть ім'я облікового запису середовища, до якого ви хочете підключитися.
У меню ліворуч виберіть Підключення -> SSH -> Тунелі. Введіть кожен з них в поле введення нижче і натисніть кнопку «Додати».
Зауваження щодо назви | параметра | |
---|---|---|
Вихідний порт | 13389 | Підійде будь-який вільний порт. Я скористаюся ним пізніше |
Призначення | 127.0.0.1:3389 |
При додаванні це має виглядати так:
Далі виберіть «Connection -> SSH -> Auth -> Cledentioals» у меню ліворуч і натисніть кнопку «Огляд» для «Файл приватного ключа для автентифікації».
Виберіть закритий ключ, який ви зберегли.
Виберіть «Сеанс» у меню ліворуч, введіть назву на ваш вибір для збереження сесій і натисніть кнопку «Зберегти». З наступного разу можна завантажити цей параметр.
Після підтвердження збереження натисніть кнопку «Відкрити».
Під час першого підключення з'явиться наведений нижче екран. Натисніть кнопку «Прийняти».
Перед вами з'явиться екран, схожий на командний рядок. Якщо у вас є парольна фраза для закритого ключа, введіть її.
Якщо вміст дисплея зміниться, як показано нижче, його буде підключено. Ви можете побачити, що відображається користувач на стороні сервера, а не клієнт. Поки це вікно відображається, воно підключене, тому, будь ласка, не закривайте його. Якщо його закрити, то зв'язок обірветься.
Підключення до віддаленого робочого стола за допомогою SSH
Тепер давайте зробимо підключення до віддаленого робочого столу при підключенні до SSH.
При підключенні частиною комп'ютера є не фактична віддалена адреса, а "localhost:< > ім'я порту, вказане в SSH-з'єднанні". У прикладі було вказано 13389, тому тут ми підключимося до "localhost:13389".
Якщо відображається екран автентифікації, можна судити про те, що з'єднання завершено. Введіть ім'я користувача та пароль для підключення.
Якщо ви можете підключитися таким чином, ви досягли успіху.
Вимкніть звичайні підключення до віддаленого робочого столу в налаштуваннях брандмауера
У момент виконання попереднього пункту тепер можна з'єднатися з віддаленим робочим столом за допомогою SSH. Однак у цьому стані «Підключення до віддаленого робочого стола за допомогою SSH» було додано лише до «Звичайного підключення до віддаленого робочого стола». З точки зору безпеки це нічого не додає. Отже, наступне, що потрібно зробити, це запобігти «нормальному підключенню до віддаленого робочого столу».
Якщо ви зробите цей параметр, ви не зможете підключитися, окрім «підключення до віддаленого робочого стола за допомогою SSH», тому, якщо ви порушите налаштування, у вас може не бути коштів для віддаленого підключення. Тому обов'язково заздалегідь перевірте, чи можливе «підключення до віддаленого робочого столу по SSH», і зможете керувати віддаленим середовищем іншими способами, навіть якщо клієнт, до якого ви намагаєтеся підключитися, зникне.
Тут налаштуйте параметри брандмауера в розділі «Підключення до віддаленого робочого столу через SSH». Це пов'язано з тим, що якщо ви виконуєте операцію зі «звичайним підключенням до віддаленого робочого столу», він буде відключений в той момент, коли ви встановите брандмауер.
Перегляд брандмауера Windows Defender із додатковою безпекою. Залежно від версії Windows розташування дисплея може відрізнятися, тому, будь ласка, відображайте його відповідно до цієї версії.
Виберіть Inbound Rules (Вхідні правила) у меню ліворуч.
У середньому списку знайдіть "Віддалений робочий стіл - Режим користувача (TCP In)" і відкрийте його властивості.
Виберіть вкладку «Область», змініть локальну IP-адресу на «Ці IP-адреси» та натисніть кнопку «Додати».
Введіть 127.0.0.1 і натисніть кнопку ОК. Це запобігає підключенню до віддаленого робочого стола звідусіль, окрім 127.0.0.1. 127.0.0.1 – це IP-адреса, яка вказує на ваш комп'ютер. Якщо ви введете неправильне значення, можливо, вам не вдасться підключитися звідусіль, тому будьте обережні.
Натисніть кнопку OK для підтвердження.
На даний момент це саме по собі є контрзаходом, але давайте також встановимо "Віддалений робочий стіл - Режим користувача (UDP Receive)".
Переконайтеся, що ви не можете віддалено підключитися до будь-чого, крім SSH
Тепер спробуйте встановити підключення до віддаленого робочого стола з іншого комп'ютера, який не використовує SSH.
Якщо ви можете підключитися, відобразиться екран автентифікації. Це нормально, якщо ви можете підтвердити, що з'єднання не може бути встановлено, як показано нижче.
Зведення
У найновішій версії Windows тепер легко впровадити SSH-сервер. Додавши параметри, тепер можна легко підвищити безпеку підключення до віддаленого робочого стола. Однак, оскільки він відповідає лише за заходи безпеки в самій Windows, Якщо ви хочете зробити його більш безпечним, я думаю, що краще налаштувати окремий SSH-сервер або брандмауер перед підключенням до Windows.
Крім того, ви можете жорстко налаштувати безпеку за допомогою SSH, але коли це занадто складно, ніхто не може підключитися через операційну помилку. Будьте обережні, щоб не отримати це.