OpenSSH в Windows - "XXX Не удалось сохранить открытый ключ в __PROGRAMDATA__

Я пытаюсь установить OpenSSH на Windows Server (стандарт 2012 R2), и я следовал инструкциям в этом месте: https://www.server-world.info/en/note?os=Windows_Server_2012&p=openssh

Я запустил Powershell от имени администратора, и, похоже, все устанавливается правильно до той части, где я пытаюсь сгенерировать ключ хоста SSH, выполнив команду .\ssh-keygen.exe -A (шаг 7 инструкции). После выполнения этого он возвращает сообщение об ошибке:

RSA Не удалось сохранить ваш открытый ключ в __PROGRAMDATA __\\ssh/ssh_host_rsa_key.9uX3wf3apv: Нет такого файла каталога "

Та же ошибка также отображается для DSA, ECDSA и ED25519.

Screenshot of errors

Если кто-нибудь может сказать мне, где я иду не так, это будет оценено. Я искал в Интернете и не нашел никаких других ссылок на это.

Ответ 1

Я получил ту же ошибку, но когда я вручную добавил папку под программными данными под названием SSH, а затем снова запустил команду, она, похоже, работала

Ответ 2

__PROGRAMDATA__ относится к вашей переменной среды PROGRAMDATA (которая, вероятно, установлена на C:\ProgramData).

Обычно проще всего открыть командную строку cmd и набрать

mkdir %PROGRAMDATA%\ssh

или powershell

mkdir $env:ProgramData\ssh

а затем повторно запустите

.\ssh-keygen.exe -A

Ответ 3

Вы должны сделать это из командной строки cmd, поскольку powershell запутывает переменную ProgramData.

Сделай это

C:\Program Files\OpenSSH-Win64> powershell.\Install-sshd.ps1 -A

из командной строки, и вам, вероятно, будет хорошо идти.

Ответ 4

Если вы хотите, вы можете запустить его как администратор. Это даст ssh-keygen.exe все права, необходимые для самостоятельного создания файлов.

runas.exe /noprofile /user:Administrator .\ssh-keygen.exe

Это установит ключи в C:\Users\Administrator.ssh

Если вы хотите, чтобы ключи были доступны для вашего текущего пользователя или другого пользователя, просто запустите Powershell от имени этого пользователя, щелкнув по нему правой кнопкой мыши и щелкнув Run as Different User.

Вы не хотите быть в приподнятом Powershell при генерации ключей

OpenSSH запускается от текущего пользователя и проверяет его C:\Users\UserName.ssh. Аналогично тому, как работает SSH в Linux.