允许在没有管理员权限的情况下从 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 终端?

  1. 因为我已经可以作为没有管理员权限的普通用户在 PS:

    之外执行一些类似的要求很高的操作

    1.1。我可以从 Msys2 portable

    ssh

    1.2。我可以从 putty(便携式)

    连接

    1.3。我可以通过 WinSCP 便携式

    传输
  2. 下面的第 (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 可用,但必须先作为一项功能启用。您可能需要管理权限才能启用它。

MS documentation on enabling 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)。