如何在 cygwin 上运行的 openssh 中配置基于 ssh 密钥的身份验证?

如何在 cygwin 上运行的 openssh 中配置基于 ssh 密钥的身份验证?

我能够在 cygwin 上安装和配置 openssh,并且运行正常,但有一个问题:我无法使用私钥/公钥认证,它就是不起作用。

我按照与 Linux 上相同的步骤添加了我的密钥,~/.ssh/authorized_Keys但它没有接收它。

我也检查过了/var/log/sshd.log,但它是空的,并且具有以下权利:

-rw-r--r-- 1 cyg_server    None      0 Aug 21 12:53 sshd.log

drwx------+ 1 Administrator None    0 Aug 21 12:57 .ssh

-rw-r--r--  1 Administrator None  395 Aug 21 12:57 authorized_hosts

我错过了什么?

答案1

如果文件名实际上是~/.ssh/authorized_Keys,则需要将文件名中的 K 小写

如果不是,请尝试ssh -v对系统执行操作。这应该会为您提供更多信息。

答案2

这可能是由于未设置 HOME 环境变量造成的。结果是什么?实际解析echo $HOME为哪个完整路径?~/.ssh/authorized_Keys

此外,我认为 authorized_keys 文件的文件名应该全部小写。

最后,cygwin 似乎存在一些奇怪的权限问题。尝试将 .ssh 目录及其内容的权限设置为 600(而不是 700)。如果这不起作用,我发现了一些cygwin 邮件列表上的旧帖子由于某种原因,.ssh 目录及其内部所有文件的所有者必须是 SYSTEM.SYSTEM。

如果这些都不起作用,请检查您的 Windows 事件日志。我相信默认情况下,cygwin 的 sshd 会在那里而不是在里面记录sshd.log(虽然我不知道为什么它会在这种情况下创建日志文件)。

答案3

Windows 10 1909我通过检查日志Event Viewer -> Windows Logs -> Application -> sshd(Source column)并设置文件的所有权和权限来解决了这个问题home, .ssh and authorized_keys,如下所示

chown Gowtham:none ~/
chmod g-w ~/
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

相关内容