Бекап через OpenSSH на Windows Servers
За допомогою OpenSSH на Windows Servers можна налаштувати бекап потрібних файлів у зручний спосіб через Powershell. Качаємо версію OpenSSH-Win64.zip https://github.com/powershell/win32-openssh/releases., закидуємо на сервер, створюємо папку C:\Program Files\OpenSSH і туди розпаковуваємо файли.
Запускаємо PowerShell ISE від Адміністратора і виконуємо команди нижче.
# 1. Переходимо в папку, куди розпакували файли
cd “C:\Program Files\OpenSSH”
# 2. Запускаємо вбудований скрипт встановлення від Microsoft
.\install-sshd.ps1
PowerShel буде ругатися , що не підтверджений виробник, погоджуємося і запускаємо. В результаті побачимо створення ланцюгів в реєстрі і слуби клієнта і сервера. Далі заходимо в сервіси і дивимося чи є сервіси, має бути OpenSSH Server і Authentication Agent.
# 3. Дозволяємо службі запускатися автоматично при старті сервера
Set-Service -Name sshd -StartupType ‘Automatic’
# 4. Запускаємо службу прямо зараз
Start-Service sshd
Ми побачимо, що status=running, тоді все добре, якщо ні – шукаємо причину.
# 6 Створюємо правило для брандмауера (порт 22)
New-NetFirewallRule -Name ‘OpenSSH-Server-In-TCP’ -DisplayName ‘OpenSSH Server (Inbound)’ -Enabled True -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow
Успішним резудьтатом буде PrimaryStatus = OK. Можна відкривати ssh клієнт і пробувати логінитися з використання логіна і пароля на сервері.
Тепер нам потрібно свторти ключі доступу для безпарольного підключення. Спочатку створюємо ключі на машині де будуть зберігатися бекапи.
# 1. Створюємо папку .ssh у своємо профайлі
New-Item -ItemType Directory -Path “$env:USERPROFILE\.ssh” -Force
# 2. В створеній папці генеруємо ключі.
ssh-keygen -t ed25519 -f “$env:USERPROFILE\.ssh\id_windows_backup” -N ‘””‘
Ми отримаємо 2 ключі приватний і публічний. Той що .pub ми маємо закинути на сервер звідки будуть копіюватися бекапи. Далі переходимо на сервер і робимо наступне.
# 1. Примусово створюємо папку для SSH, якщо її приховано. Якщо папка існує, то цей пункт пропускаємо.
New-Item -ItemType Directory -Path “C:\ProgramData\ssh” -Force | Out-Null
# 2. Створюємо сам файл ключів всередині прихованої папки
New-Item -ItemType File -Path “C:\ProgramData\ssh\administrators_authorized_keys” -Force | Out-Null
# 3. Відкриваємо цей файл у Блокноті
notepad.exe “C:\ProgramData\ssh\administrators_authorized_keys”, копіюємю сюди ключ із pub файла.
Налаштовуємо безпеку.
#Якщо сервер на кириліці, то ця команда буде виводити в UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# 1. Вимикаємо успадкування прав доступу
icacls “$env:ProgramData\ssh\administrators_authorized_keys” /inheritance:r
# 2. Надаємо повний доступ системі (SYSTEM)
icacls “$env:ProgramData\ssh\administrators_authorized_keys” /grant “SYSTEM:(F)”
# 3. Надаємо повний доступ групі адміністраторів (Administrators)
icacls “$env:ProgramData\ssh\administrators_authorized_keys” /grant “BUILTIN\Administrators:(F)”
# 4. Перезапускаємо OpenSSH, щоб усе запрацювало
Restart-Service sshd