Управление ключами OpenSSH Windows PowerShell

Управление ключами OpenSSH Windows PowerShell

Сначала необходимо установить OpenSSH Server. См. статью о начале работы с OpenSSH

Создание ключей узла

Для открытых ключей действуют определенные требования к ACL, которые в среде Windows соответствуют предоставлению доступа только администраторам и системной учетной записи. При первом использовании sshd будет автоматически создана пара ключей для узла.

По умолчанию служба sshd настроена для запуска вручную. Чтобы запускать ее каждый раз при перезагрузке сервера, выполните следующие команды в командной строке PowerShell с повышенными привилегиями на сервере:

# Set the sshd service to be started automatically
Get-Service -Name sshd | Set-Service -StartupType Automatic

# Now start the sshd service
Start-Service sshd

Так как со службой sshd не связан какой-либо пользователь, ключи узла сохраняются в папке C:\ProgramData\ssh.

Создание ключей пользователя

Чтобы использовать аутентификацию на основе ключей, необходимо заранее создать для клиента одну или несколько пар открытого и закрытого ключей. Программа ssh-keygen.exe используется для создания файлов ключей, при этом вы можете задать алгоритмы DSA, RSA, ECDSA или Ed25519. Если алгоритм не указан, используется RSA. Необходимо использовать надежный алгоритм и соответствующую длину ключа, например Ed25519 в этом примере.

Чтобы создать файлы ключей с помощью алгоритма Ed25519, выполните следующую команду в командной строке PowerShell или в командной строке на клиенте:

ssh-keygen -t ed25519

Эта команда возвращает такие выходные данные (username заменяется вашим именем пользователя):

Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\username\.ssh\id_ed25519):

Можно нажать клавишу ВВОД, чтобы принять вариант по умолчанию, или указать путь и (или) имя файла для создания файлов ключей. На этом этапе вам будет предложено указать парольную фразу для шифрования файлов закрытого ключа. Она может быть пустой, но это не рекомендуется. Парольная фраза в сочетании с файлом ключа позволяет выполнить двухфакторную аутентификацию. В нашем примере парольная фраза остается пустой.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\username\.ssh\id_ed25519.
Your public key has been saved in C:\Users\username\.ssh\id_ed25519.pub.
The key fingerprint is:
SHA256:OIzc1yE7joL2Bzy8!gS0j8eGK7bYaH1FmF3sDuMeSj8 username@server@LOCAL-HOSTNAME

The key's randomart image is:
+--[ED25519 256]--+
|        .        |
|         o       |
|    . + + .      |
|   o B * = .     |
|   o= B S .      |
|   .=B O o       |
|  + =+% o        |
| *oo.O.E         |
|+.o+=o. .        |
+----[SHA256]-----+

Теперь у вас есть пара открытого и закрытого ключей Ed25519 в указанном расположении. Файлы PUB являются открытыми ключами, а файлы без расширения — закрытыми.

Помните, что файлы закрытых ключей выполняют функцию пароля и должны защищаться так же тщательно. Для этого, чтобы безопасно хранить закрытые ключи в контексте безопасности Windows, связанным с определенным именем входа Windows, используйте ssh-agent. Запустите службу ssh-agent от имени администратора и выполните ssh-add, чтобы сохранить закрытый ключ.

# By default the ssh-agent service is disabled. Allow it to be manually started for the next step to work.
# Make sure you're running as an Administrator.
Get-Service ssh-agent | Set-Service -StartupType Manual

# Start the service
Start-Service ssh-agent

# This should return a status of Running
Get-Service ssh-agent

# Now load your key files into ssh-agent
ssh-add ~\.ssh\id_ed25519

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

ssh-add C:\Users\"user name"\.ssh\test

После этого при каждом выполнении аутентификации с этого клиента с использованием закрытого ключа, ssh-agent будет автоматически извлекать его и передавать клиенту SSH.

Microsoft настоятельно рекомендует создать резервную копию закрытого ключа в безопасном расположении, а затем удалить его из локальной системы после добавления в ssh-agent. Закрытый ключ нельзя получить из агента, если использовался надежный алгоритм, например Ed25519 в этом примере. Если вы утратите доступ к закрытому ключу, вам нужно будет создать новую пару ключей и обновить открытый ключ во всех системах, с которыми вы работаете.

Read more

Git: работа с ветками, конфликтами и Pull Request

Git: работа с ветками, конфликтами и Pull Request

Введение Git позволяет работать с ветками, безопасно вносить изменения и объединять их через Pull Request. В этой инструкции — базовые сценарии для повседневной работы. Работа с ветками Создание ветки git checkout -b feature/task-name Создаёт новую ветку и сразу переключает на неё. Переключение между ветками git checkout main git checkout feature/

By Evgeny Shmelev
Инструкция по работе с Git (базовая памятка)

Инструкция по работе с Git (базовая памятка)

Введение Git — система контроля версий для отслеживания изменений в файлах и совместной работы. Ниже — краткая практическая инструкция для повседневного использования. Основные команды Проверка состояния git status Показывает: * есть ли изменения * синхронизацию с сервером * новые файлы Получение изменений git pull Забирает изменения и объединяет их с текущей веткой. Обновление через rebase

By Evgeny Shmelev
Git показывает странные символы (\320\277...), файл удалён и появился заново — как исправить

Git показывает странные символы (\320\277...), файл удалён и появился заново — как исправить

Проблема При выполнении: git status можно увидеть: deleted: "\320\277\320\276..." untracked: "\320\277\320\276....txt" modified: .DS_Store При этом: * имя файла отображается непонятными символами * Git показывает удаление одного файла и появление другого * появляется файл .DS_Store Причина 1. Файл был переименован или

By Evgeny Shmelev