对于 ssh,我习惯使用 unix 系统。我有“sudo”权限,但当我 ssh 进入我的帐户时,我不是管理员,我只是一个普通用户。要执行任何管理员操作,我必须“sudo”
本地也是一样。我打开一个终端,我不是管理员。我只是一个普通用户。
即使在 Windows 10 中启动 powershell,我也没有管理员权限。要获取管理员权限,我必须专门打开并管理 powershell。默认没有管理员权限。
我最近设置在 Windows 10 上使用 powershell 进行 ssh但是当我 ssh 进入 shell 时它说有管理员权限
(New-Object Security.Principal.WindowsPrincipal(
[Security.Principal.WindowsIdentity]::GetCurrent())
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
True
我怎样才能让它的行为与我在本地启动 powershell 时一样,在没有管理员权限的情况下启动它?
如果在我的桌面上不清楚,我会打开命令提示符并输入pwsh
,我不是管理员
Microsoft Windows [Version 10.0.18363.900]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\gregg>pwsh
PowerShell 7.0.1
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
Loading personal and system profiles took 620ms.
❯ (New-Object Security.Principal.WindowsPrincipal(
>> [Security.Principal.WindowsIdentity]::GetCurrent())
>> ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
False
再次执行此操作,除了 ssh 到 localhost,但不知何故我是管理员
Microsoft Windows [Version 10.0.18363.900]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\gregg>ssh localhost
gregg@localhost's password:
PowerShell 7.0.1
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
Loading personal and system profiles took 620ms.
❯ (New-Object Security.Principal.WindowsPrincipal(
>> [Security.Principal.WindowsIdentity]::GetCurrent())
>> ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
True
这两个命令pwsh
应该ssh localhost
以相同的情况结束,但事实并非如此。如何修复ssh localhost
它的行为与pwsh
PS:我发现 powershell 似乎没有“sudo”类型的命令,也没有提升权限的方法。这不是我的问题。我的问题是,当我在本地启动 powershell 时,我不是管理员。当我通过 ssh 启动它时,如何让它表现得一样
附加问题:如果有关于如何以管理员组中的用户身份通过 ssh 进入 powershell 但没有 powershell 管理员权限的答案,那么通过 ssh 选择启动具有管理员权限的 powershell 的过程是什么?(标志等......)
答案1
Windows 在没有管理员权限/提升权限的情况下启动桌面的方式(即使您的用户帐户属于管理员组并且应该具有这些权限),是联合航空。
sshd 服务中需要内置一些功能,以运行创建低权限标准访问令牌的相同逻辑,而不是使用默认管理令牌启动 shell 进程。
在里面Windows sshd 文档这是我能找到的最相关的语言:
请注意,如果用户属于管理员组,则使用 %programdata%/ssh/administrators_authorized_keys。
所以看起来该功能目前还不存在。但如果你创建了功能请求,我会 +1!
我能想到的其他解决方案是“使用不同的用户”或“以非提升的权限运行不同的 ssh 服务器”:(
如果您创建不属于管理员组的其他 Windows 用户帐户并通过 SSH 连接到该用户,则不会提升您的权限。但这可能没什么用...
如果你以非提升权限的方式启动了 ssh 服务器,它产生的 shell 进程也将是非提升权限的。你可以尝试从 WSL 安装 sshd?我还没有尝试过,所以不知道它是否有用。
我也想过PowerShell 远程处理但在我的测试中,它总是启动一个提升的 shell,与 SSH 相同。