允许在没有管理员权限的情况下从 PowerShell 使用 SSH
Allow SSH from PowerShell without Administrator privileges
我的意思是在 PS 5.1 in Win 10 下通过 ssh 在 Ubuntu 20.04LTS 服务器中获取终端。
我知道我可以使用 native support for OpenSSH,而且我之前已经做过。
现在我想在没有管理员权限的情况下执行此操作,以尽量减少“污染”我的系统。
由于以下 (1) 所述的原因,我认为我无法使用本机 OpenSSH。
由于下面(2)所述的原因,我认为这是可能的。
例如,我已经可以启动一个会话并发出远程命令 ref,见下文 (3)。
但是我无法启动终端。
有没有办法实现我的意思?
如何?
(1) 为什么我不能使用本机 OpenSSH?
例如,启用 OpenSSH 的 PS 方式中的前两个命令已经需要管理员(我的 PS 是西班牙语):
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Get-WindowsCapability : La operación solicitada requiere elevación.
> Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability : La operación solicitada requiere elevación.
(2) 为什么我认为 可能 在 PS 中获得没有管理员权限的 ssh 终端?
因为我已经可以作为没有管理员权限的普通用户在 PS:
之外执行一些类似的要求很高的操作
1.1。我可以从 Msys2
portable
ssh
1.2。我可以从 putty
(便携式)
连接
1.3。我可以通过 WinSCP
便携式
传输
下面的第 (3) 项。
(3) 如何启动 ssh 会话并从 PS
发出远程命令
安装Posh-SSH
for the current user only。
那么
> New-SSHSession -Host xxx.xxx.0.xxx -Credential (Get-Credential)
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
Server SSH Fingerprint
Do you want to trust the fingerprint xx:xx:...
[] Y [] N [?] Ayuda (el valor predeterminado es "N"): y
SessionId Host Connected
--------- ---- ---------
0 xxx.xxx.0.xxx True
> Get-SSHSession
SessionId Host Connected
--------- ---- ---------
0 xxx.xxx.0.xxx True
> Invoke-SSHCommand -Index 0 -Command "pwd"
Host : xxx.xxx.0.xxx
Output : {/home/user1}
ExitStatus : 0
Windows 10 从 v1809 开始就内置了 SSH。已经安装了OpenSSH-Client,直接调用ssh
即可使用。尝试 Get-Command ssh
。它应该 return C:\WINDOWS\System32\OpenSSH\ssh.exe
。您可以连接到任何支持 SSH 的东西,而无需“开箱即用”的管理权限:
ssh -l <username> <DNS-Name/IP>
还有一个 OpenSSH-Server 可用,但必须先作为一项功能启用。您可能需要管理权限才能启用它。
Windows 10(和 11)的最新版本内置了 ssh.exe
。它不需要安装。如果你没有它,你要么没有最新版本的 Windows 10,要么 OpenSSH 组件以某种方式明确地 removed/forbidden.
无论如何,您可以从 Win32-OpenSSH project 手动下载 ssh.exe
。您不需要管理员权限。它不需要任何安装。
但另一方面,如果您不应该安装软件,如果您已经有了 PuTTY,为什么还要尝试绕过这些限制?使用 PuTTY,而不是 ssh
。如果需要自动化的控制台工具,可以使用PuTTY plink.exe
。它是相当于 PuTTY 的控制台。出于自动化目的,它与 OpenSSH ssh
相同(它不具备 ssh
的所有交互功能——为了交互目的,请使用 PuTTY)。
我的意思是在 PS 5.1 in Win 10 下通过 ssh 在 Ubuntu 20.04LTS 服务器中获取终端。 我知道我可以使用 native support for OpenSSH,而且我之前已经做过。
现在我想在没有管理员权限的情况下执行此操作,以尽量减少“污染”我的系统。 由于以下 (1) 所述的原因,我认为我无法使用本机 OpenSSH。
由于下面(2)所述的原因,我认为这是可能的。 例如,我已经可以启动一个会话并发出远程命令 ref,见下文 (3)。 但是我无法启动终端。
有没有办法实现我的意思? 如何?
(1) 为什么我不能使用本机 OpenSSH?
例如,启用 OpenSSH 的 PS 方式中的前两个命令已经需要管理员(我的 PS 是西班牙语):
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Get-WindowsCapability : La operación solicitada requiere elevación.
> Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability : La operación solicitada requiere elevación.
(2) 为什么我认为 可能 在 PS 中获得没有管理员权限的 ssh 终端?
因为我已经可以作为没有管理员权限的普通用户在 PS:
之外执行一些类似的要求很高的操作1.1。我可以从
sshMsys2
portable1.2。我可以从
连接putty
(便携式)1.3。我可以通过
传输WinSCP
便携式下面的第 (3) 项。
(3) 如何启动 ssh 会话并从 PS
发出远程命令安装Posh-SSH
for the current user only。
那么
> New-SSHSession -Host xxx.xxx.0.xxx -Credential (Get-Credential)
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
Server SSH Fingerprint
Do you want to trust the fingerprint xx:xx:...
[] Y [] N [?] Ayuda (el valor predeterminado es "N"): y
SessionId Host Connected
--------- ---- ---------
0 xxx.xxx.0.xxx True
> Get-SSHSession
SessionId Host Connected
--------- ---- ---------
0 xxx.xxx.0.xxx True
> Invoke-SSHCommand -Index 0 -Command "pwd"
Host : xxx.xxx.0.xxx
Output : {/home/user1}
ExitStatus : 0
Windows 10 从 v1809 开始就内置了 SSH。已经安装了OpenSSH-Client,直接调用ssh
即可使用。尝试 Get-Command ssh
。它应该 return C:\WINDOWS\System32\OpenSSH\ssh.exe
。您可以连接到任何支持 SSH 的东西,而无需“开箱即用”的管理权限:
ssh -l <username> <DNS-Name/IP>
还有一个 OpenSSH-Server 可用,但必须先作为一项功能启用。您可能需要管理权限才能启用它。
Windows 10(和 11)的最新版本内置了 ssh.exe
。它不需要安装。如果你没有它,你要么没有最新版本的 Windows 10,要么 OpenSSH 组件以某种方式明确地 removed/forbidden.
无论如何,您可以从 Win32-OpenSSH project 手动下载 ssh.exe
。您不需要管理员权限。它不需要任何安装。
但另一方面,如果您不应该安装软件,如果您已经有了 PuTTY,为什么还要尝试绕过这些限制?使用 PuTTY,而不是 ssh
。如果需要自动化的控制台工具,可以使用PuTTY plink.exe
。它是相当于 PuTTY 的控制台。出于自动化目的,它与 OpenSSH ssh
相同(它不具备 ssh
的所有交互功能——为了交互目的,请使用 PuTTY)。