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\config
和chown 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] -> Searchremote.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 clientC:\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 文件夹并查看 config
和 id_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:权限被拒绝