Tit*_*dow 4 windows ssh public-key
我一直在尝试为我的 Windows 10 专业版媒体服务器配置 OpenSSH。我可以正常使用密码登录,没有问题,但我正在尝试设置公钥身份验证。
我已编辑我的sshd_config文件以允许公钥身份验证。客户端和服务器正在运行ssh-agent。C:\ProgramData\ssh\administrators_authorized_keys由于该帐户是管理员帐户,因此我已将客户端计算机上的 SSH 公钥复制并粘贴到该文件中。上述文件的权限设置与目录中其他关键文件相同,只是SYSTEM和Administrators具有完全控制权,没有列出其他人。
我添加了调试日志记录,当我尝试使用公钥连接时,我得到以下信息:
debug1: userauth-request for user uther service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
debug1: user uther matched group list administrators at line 84
debug1: userauth-request for user uther service ssh-connection method publickey [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: userauth_pubkey: test pkalg ssh-rsa pkblob RSA SHA256:jcQNaVuxvH90SIh4zu8xduBqJaav1WFQJIov3hiFSFM [preauth]
debug1: trying public key file C:\\ProgramData\\ssh\\administrators_authorized_keys
Failed publickey for uther from 10.0.0.24 port 60432 ssh2: RSA SHA256:jcQNaVuxvH90SIh4zu8xduBqJaav1WFQJIov3hiFSFM
debug1: userauth-request for user uther service ssh-connection method keyboard-interactive [preauth]
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题。我使用远程桌面将客户端上的 id_rsa.pub 文本剪切并粘贴到管理员授权密钥文件中的服务器。似乎没有权限错误,我不明白为什么它无法进行身份验证。
我将不胜感激任何人可以提供帮助以使其正常工作。这并不重要,SSH 不会暴露在互联网上,但我使用的一些脚本在公钥身份验证方面会做得更好。
我还应该注意,当我设置使用我的 Microsoft 帐户的服务器时,我一直想知道这是否与此有关,所以我可能会尝试设置一个直接的本地帐户,看看是否可以解决问题。
编辑:我尝试创建本地用户帐户,但不能。即使当我尝试使用control userpasswords2该框时,但所有创建帐户的选项都被禁用。我想这一定是因为我使用的是 Windows 10 Professional,而不是更高、最昂贵的版本。
我终于通过注释掉以下几行解决了这个问题:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Run Code Online (Sandbox Code Playgroud)
然后我将授权密钥放入普通文件中,~\.ssh\authorized_keys就像我使用 ssh 时一样。当我进行初步研究时,我发现这对很多人不起作用,并对其打了折扣。
小智 5
在 PowerShell 中使用此命令序列来更正权限administrators_authorized_keys
$acl = Get-Acl C:\ProgramData\ssh\administrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($administratorsRule)
$acl.SetAccessRule($systemRule)
$acl | Set-Acl
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8705 次 |
| 最近记录: |