openssh windows 错误的所有者或权限

Posted

技术标签:

【中文标题】openssh windows 错误的所有者或权限【英文标题】:openssh windows bad owner or permissions 【发布时间】:2018-09-30 06:29:36 【问题描述】:

我已经为 windows 安装了 openssh,当我运行 ssh localhost 时,我得到了

C:\Users\gary/.ssh/config 上的所有者或权限不正确

我查看了https://superuser.com/questions/348694/bad-owner-or-permissions-error-using-cygwins-ssh-exe 和https://serverfault.com/questions/253313/ssh-returns-bad-owner-or-permissions-on-ssh-config 这两个问题,但没有一个答案对我有用。 sshd 作为本地系统用户作为服务运行。我已经运行了chmod 0600 C:\Users\gary\.ssh\configchown gary C:\Users\gary\.ssh\config。我还通过运行setfacl -b C:\Users\gary\.ssh\config 然后再次运行chmod 0600 C:\Users\gary\.ssh\config 来清除ACL。我也尝试将所有者更改为 SYSTEM 并得到同样的错误。

我不知道还能做什么,我的设置有什么问题吗?我还安装了 git,它安装了 mingw,我从我的 git 安装中删除了 ssh 和 sshd,这样它们就不会出现在我的路径上。

我运行的其他命令是 icacls "C:\Users\gary\.ssh\config" /setowner gary chown -R gary:1049089 C:\Users\gary\.ssh

ls -la C:\Users\gary\.ssh\config 显示

-rw-r--r-- 1 gary 1049089 229 Jan 3 14:43 'C:\Users\gary.ssh\config'

即使在将所有者更改为 SYSTEM 后,它仍然显示此内容,但在文件资源管理器的文件属性中,它显示 SYSTEM 作为所有者

【问题讨论】:

我今天更新windows后第一次遇到同样的问题。我也在使用cmder,而“vagrant ssh”对我产生了同样的错误。我发现(来自PATH 环境变量),vagrant 使用的ssh 客户端是来自C:\WINDOWS\System32\OpenSSH 的客户端。所以我只需要先添加一条到我自己的ssh 客户端的路径——问题就解决了。希望这会有所帮助。 这个blog 可能有帮助 今天遇到了同样的问题。我尝试了很多不同的东西,最后让它为我工作。 1. 禁用 .ssh 文件夹的继承并删除所有权限, 2. 添加管理员权限 3. 重命名我的计算机名,使其与用户名不同。仍在使用 windows openssh,而不是 git。 将整个 .ssh 文件夹的权限更改为只有您拥有完全访问权限,无论如何都应该如此。 【参考方案1】:

在我创建另一个具有管理员权限的用户后立即开始弹出,并且该帐户开始继承对我的 .ssh 文件夹的访问权限。

您无需更改任何权限。

只需转到 .ssh,右键单击属性、安全选项卡、高级。禁用继承,然后单击管理员用户(不是您的用户)并删除它们。申请。完成。

【讨论】:

这似乎是我的情况。我会在系统上设置另一个用户帐户进行测试。它可以访问。一旦我将该用户从对 .ssh 文件夹的访问权限中删除,它就可以正常工作了。 我试过了,但它并没有解决我的问题 非常感谢!这对我有用。所以下面是我的环境,希望有人觉得这很有用。 - 在 Windows 10 机器上运行 Ubuntu 20 的 WSL 1.0 - .ssh/config 文件没有被 vagrant 读取,并且经常出现权限问题。 - 应用了上述设置,vagrant ssh 在申请后工作得很好 当您禁用继承时,系统会询问您是否要复制当前继承的访问权限。选择是,然后如上所述删除其他用户继续。 2021年详细更新。仍然需要删除继承。使用:所有者 -> 完全控制。管理员 -> 修改。删除任何其他。请注意,如果您打开文件,它可能会再次更改权限,具体取决于您使用的软件。【参考方案2】:

将 ssh 客户端从 C:\Windows\System32\OpenSSH\ssh.exe 更改为 C:\Program Files\Git\usr\bin\ssh.exe为我工作。

【讨论】:

如果你也告诉了步骤会更好。 感谢您的提示。我通过将 C:\Program Files\Git\usr\bin 添加到系统变量 Path 并确保它高于(之前)%SYSTEMROOT%\System32\OpenSSH。遗憾的是,我无法将 Git 的 ssh 与 Windows 的 ssh-agent 服务一起使用。然后我会解密我所有的私钥。 我通过使用 GitBash 而不是 Cygwin 解决了这个问题。 步骤:[File] -> [Preferences] -> [Settings] -> Search remote.ssh.path -> Input C:\Program Files\Git\usr\bin\ssh.exe into [Remote.SSH: Path] 见:code.visualstudio.com/docs/remote/…跨度> 这个答案可能会解决一些用户的问题,但这并不是真正的问题解决方案。对于已经安装了 git 的人来说,这更像是一种解决方法。【参考方案3】:

重新安装windows后也遇到了同样的问题。只需将文件权限更改为

即可轻松修复

SYSTEM & Administrators - Full Control
[your username] - Modify & as Owner

注意:

我仍在使用 Windows 10 built-in SSH client C:\Windows\System32\OpenSSH\ssh.exe 而根本没有使用 cygwin

【讨论】:

以上对我有用,但如果我在 Fery 授予它修改权限的权限行中用 OWNER 替换用户名,则不起作用。完全控制适用于权限。 这对我有用(Windows 10 上的 OpenSSH-Win32)删除继承和所有其他权限并仅添加我自己具有完全控制权。 将文件的完全控制权交给用户和/或删除继承没有帮助。猜猜我只需要更改 SSH 客户端,因为我安装了 Git Bash :) 只是对 SEO 评论这个答案多一点,因为它很难找到。我们使用的是 Composer for Windows 10,版本 1.9.3。当尝试从我们自己的私有 BitBucket 存储库进行更新时,此答案解决了“未受保护的私钥文件”和“错误的所有者或权限”的问题。 这对我有用。我仍在运行 Win 10 1703,并且正在使用手动安装的 Win32-OpenSSH 版本。【参考方案4】:

对于那些仍在为此苦苦挣扎的人,请查看:https://github.com/PowerShell/openssh-portable/pull/418。我就是这种情况。事实证明,您的计算机名称应该与您的用户名不同......

再说一遍:如果您的计算机名称与您的用户名相同,并且您仍未通过权限对话框解决此问题,那么重命名您的计算机可能会有所帮助。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效 非常感谢。这为我修好了 执行。我的用户名和计算机名相同。重命名为不同的名称解决了这个问题。谢谢 谢谢,这为我解决了!问题仍未解决,我不得不更改我的计算机名称。 非常感谢!我的用户名等于计算机名。重命名计算机解决了这个问题。【参考方案5】:

我不确定您运行的是哪个版本的 Windows,但由于这是最近的版本,我猜想是 Windows 10。我最近发现在 2018 年 4 月更新时默认安装了 OpenSSH 客户端。然后我发现我有两个 OpenSSH 实例:一个是我自己安装的,一个是 Windows 给我的。卸载我安装的那个导致您描述的错误消息。

对我有用的解决方案是删除用户安装的 OpenSSH 以及 C:\Users\username\.ssh 文件夹,并让 Windows 10 OpenSSH 在您下次运行该命令时创建该文件夹。我没有担心丢失的任何配置,但如果您这样做了,我建议您将文件的内容复制并粘贴到某处,然后再恢复它们。

希望这会有所帮助!

【讨论】:

在删除 .ssh 文件夹后检查 ssh.exe 本身赋予的权限,并将这些权限应用于其余文件,为我解决了问题。 我遇到了这个问题,我在重新安装 Windows 后复制粘贴了旧的 .ssh 文件夹,这就是为什么它显示这个错误。删除 .ssh 文件夹并让 ssh 再次创建它对我有用。【参考方案6】:

使用FixUserFilePermissions.ps1 修复客户端文件的权限 - 当前用户的密钥和配置文件。

git clone git@github.com:PowerShell/openssh-portable.git
cd openssh-portable/contrib/win32/openssh
.\FixUserFilePermissions.ps1 -Confirm:$false

【讨论】:

我必须克隆 repo,cd 到 /openssh-portable/contrib/win32/openssh 然后运行上面的命令。比配置 windows 文件属性和权限要容易得多。【参考方案7】:

在 Windows 服务器上,这是由于权限问题。需要删除其他用户对以下文件夹的访问权限

.ssh - 文件夹

右键单击此文件夹->选择“授予访问权限”->单击“删除访问权限” 右击这个文件夹->选择“属性”->“证券”->点击“编辑权限”-删除除你登录的ID以外的其他用户。

对您拥有 .pem 文件的文件夹重复相同的过程。 (注意:将 .pem 文件保存在单独的文件夹中)

【讨论】:

这对我有帮助。谢谢。由于某种原因,本地管理员在此文件夹中。【参考方案8】:

对于在应用所有者 + 修改(加上对管理员的完全控制)后仍有问题的任何人:它对我不起作用。然后我看到了一个删除所有其他用户(包括所有管理员)的解决方案,这也没有帮助。

这对我有用:

如上所述,保留系统和管理员的完全控制权 按照上面的建议,将用户本身保留为所有者,并进行修改 但是,删除任何其他用户或组。您可能需要先进入高级,以禁用权利继承

在我删除了进入我的文件夹后由 Windows 添加的管理用户(通过 UAC 框)后,它再次为我工作。

希望这对遇到此特定问题的人有所帮助:-)

【讨论】:

【参考方案9】:

今天遇到同样的问题,我就是这样解决的:

    转到 C:\Users\username.ssh 右击config文件 属性 -> 安全 -> 高级 -> 禁用继承 -> 禁用 继承 -> 从此对象删除所有继承的权限 -> 申请 -> 是 -> 好的 -> 好的

【讨论】:

【参考方案10】:

如果用户在管理组中,只需将配置保留在 c:\programdata\ssh\ssh_config 代替 %USERPROFILE%.ssh\config 会起作用

【讨论】:

这是我最终使用的解决方案。计算机与用户同名,这意味着我不需要更改它。【参考方案11】:

您可以使用一个衬里,而不是使用属性框:

icacls .ssh /grant:r <yourUserName>:f /inheritance:r

/grant:r username:f -> 授予和覆盖权限,将完全权限授予username /inheritance:r -> 移除继承的权限

【讨论】:

【参考方案12】:

对我来说,它是通过在 ~/.ssh/ 下运行 chmod 0644 配置来修复的。早些时候它被设置为 755,这导致“/home/home/.ssh/config 上的所有者或权限错误”

【讨论】:

是的!它也可以在 Windows 10 下运行(通过 Git Bush 完成)【参考方案13】:

我尝试了上述所有解决方案,但遗憾的是仍然无法解决此问题。我很确定我的 ssh 配置的权限是正确的,这已通过探索 GUI 和 Get-Acl 命令验证。

那我终于找到了解决办法:

删除整个.ssh 文件夹,然后打开powershell 并键入ssh localhost。它将为您创建一个新的.ssh 文件夹,然后您可以应用上述权限调整(对我而言,我只做了一件事:禁用继承)。

因此,如果其他解决方案不适合您,也许您可​​以尝试一下。希望对您有所帮助。

PS:删除之前不要忘记备份旧的.ssh 文件夹。

【讨论】:

【参考方案14】:

我遇到了这个问题,再多的更改权限或禁用配置文件上的继承都无法解决它。原来它不喜欢我的电脑名和用户名一样,所以我重新命名了我的电脑,允许open ssh重新创建配置文件,现在权限是正确的。一开始这可能是个坏主意,tbh。

【讨论】:

请重点回答问题,不要添加主观描述【参考方案15】:

域名转换后,我开始遇到同样的问题。浏览了所有列出的建议,但没有任何效果,包括 chmod 和 chown 解决方案。

我最终通过复制文件夹、粘贴文件夹、删除原始文件夹然后将其重命名为 .ssh 来解决问题。

【讨论】:

【参考方案16】:

问题似乎来自文件拥有/拥有多个用户的权限。

1- 转到您的 ./ssh 文件夹并查看 configid_rsa 文件。从属性 -> 安全 -> 高级: 2- 确保您登录的用户是那里唯一的用户。

【讨论】:

【参考方案17】:

不换组什么的,第一个答案是对的。改成git ssh.exe 怎么样?

设置中卸载win10的openssh 将git的ssh.exe路径添加到你的Path

【讨论】:

【参考方案18】:

对我来说,它是通过在运行 WSL 时在 ~/.ssh/ 下运行 chmod 0644 config 来修复的。

【讨论】:

【参考方案19】:
    config 文件重命名为 config2 用记事本打开这个文件 另存为配置(原名)

这对我有用。

【讨论】:

【参考方案20】:

我猜是路径表达式错误造成的。

C:\Users\gary/.ssh/config 上的所有者或权限不正确

/.ssh 应该是 \.ssh。所以我尝试使用git bash(Windows系统安装git时的终端工具)来运行ssh命令。真的行。不过不知道是不是我猜的原因造成的。

【讨论】:

【参考方案21】:

我删除了C:\Users\user/.ssh/config 并重新运行了我的东西,然后它起作用了。

不过,如果你有贵重物品,请先做好备份,以防万一!

【讨论】:

【参考方案22】:

禁用继承后,请确保添加当前用户,否则您无法编辑文件

【讨论】:

【参考方案23】:

大家好,经过一天的故障排除后,我发现这个“m..f..”配置文件不应该位于 .ssh/ 路径中。

对于 VSCODE,只需按照调色板命令的第二个选择中的建议在 'C:\ProgrmaData\ssh\ssh_config' 路径中设置配置,并忘记此配置的 .shh 路径。

这对我来说很好。

注意:这里还创建了一个 known_host 文件,里面有奇怪的虚拟机名称,我也删除了这个文件。这会有所帮助

【讨论】:

以上是关于openssh windows 错误的所有者或权限的主要内容,如果未能解决你的问题,请参考以下文章

OpenSSH WIndows 10 - key_load_private:权限被拒绝

sshd 的 Windows 10 OpenSSH 授权密钥错误

linux搭建sftp(openssh)

Windows 上的 openSSH 错误

登录 ssh 时出现“权限太开放”

如何在 Windows 上的 git 配置中修复“ssh 权限被拒绝,请重试错误”