Windows 上的 OpenSSH - "XXX 无法将您的公钥保存在 __PROGRAMDATA__ 中

27

我正在尝试在 Windows Server (2012 R2标准版) 上安装 OpenSSH,按照此位置中的说明进行操作。

我以管理员身份运行 Powershell,一切都正常安装,直到我尝试通过运行命令.\ssh-keygen.exe -A(说明书的第7步)生成SSH主机密钥。运行后出现以下错误:

RSA Could not save your public key in __PROGRAMDATA__\\ssh/ssh_host_rsa_key.9uX3wf3apv: No Such file of directory"

同样的错误也适用于DSA、ECDSA和ED25519。

错误截图

如果有人能告诉我在这里错了什么,我将不胜感激。我已经在网上搜索过了,没有找到任何其他相关内容。

4个回答

81

__PROGRAMDATA__指的是您的环境变量PROGRAMDATA(可能设置为C:\ProgramData)。

通常最容易的方法是打开cmd命令提示符并键入

mkdir %PROGRAMDATA%\ssh

或者 PowerShell

mkdir $env:ProgramData\ssh

然后重新运行

.\ssh-keygen.exe -A

1
这对我起作用了。 - arcee123
这是正确的答案。有人可以标记一下吗? - needfulthing
@needfulthing OP最后一次出现是在2.5年前,而且只有这个答案的声望。很可能永远不会有人接受这个答案。 - Anthon
我想也许一些管理员/论坛操作员可以做到这一点。 - needfulthing

33

我遇到了同样的错误,但是当我手动在programdata下添加了一个名为SSH的文件夹后,再次运行该命令似乎就可以正常工作了。


4
谢谢!当我在 Windows Server 2012R2 上尝试时,这解决了我的问题。 :) - Christian Wilkie
需要在Windows Server 2016上进行相同的修复。 - wintondeshong

2

你需要从命令提示符中执行此操作,因为PowerShell会破坏ProgramData变量。

请执行以下命令:

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

然后你可能就可以顺利进行了。


在管理员权限的PowerShell中输入"mkdir $env:ProgramData\ssh"对我来说运行良好。 - needfulthing

0

如果需要的话,你可以以管理员身份运行它。这将赋予ssh-keygen.exe创建文件所需的所有权限。

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

这将安装密钥在C:\ Users \ Administrator.ssh下

如果您希望密钥对当前用户或其他用户可访问,只需右键单击PowerShell并单击以不同的用户身份运行即可作为该用户运行PowerShell。

生成密钥时不要在提升的Powershell中

OpenSSH从当前用户运行并检查他们的C:\ Users \ UserName.ssh。类似于Linux中的SSH工作方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接