代码之家  ›  专栏  ›  技术社区  ›  sancho.s ReinstateMonicaCellio

SSH从PowerShell到Linux

  •  0
  • sancho.s ReinstateMonicaCellio  · 技术社区  · 4 年前

    我的意思是在Win 10的PS 5.1下通过ssh在Ubuntu 20.04LTS服务器上获得一个终端 . 我知道我可以合作 native support for OpenSSH ,我以前也做过。

    现在 我想在没有管理员权限的情况下进行此操作 ,尽量减少“污染”我的系统。 出于以下原因(1),我认为我无法使用本机OpenSSH。

    基于下文(2)所述的原因,我认为这是可能的。 例如,我已经可以启动会话并发出远程命令 ref ,见下文(3)。 但我无法启动终端。

    有没有办法实现我的意思? 怎么用?


    1. 为什么,就我的目的而言,我不能使用本机OpenSSH?

    例如,以PS方式启用OpenSSH的前两个命令已经需要admin(我的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. 我可以通过ssh Msys2 便携式的

      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
    
    0 回复  |  直到 2 年前
        1
  •  4
  •   Martin Prikryl    2 年前

    最新版本的Windows 10(和11)具有 ssh.exe 内置。不需要安装。如果你没有它,你要么没有最新版本的Windows 10,要么OpenSSH组件被明确删除/禁止。

    不管怎样,你可以下载 ssh.exe 手动从 Win32-OpenSSH project 。您不需要管理员权限。它不需要任何安装。


    但另一方面,如果你不应该安装软件,如果你已经有了PuTTY,为什么还要试图绕过这些限制呢?使用PuTTY,而不是 ssh 。如果您需要用于自动化的控制台工具,可以使用 PuTTY plink.exe 。它相当于PuTTY的主机。出于自动化目的,它与OpenSSH完全相同 ssh (它没有所有的交互功能 ssh 出于交互目的,请使用PuTTY)。

        2
  •  2
  •   stackprotector    4 年前

    Windows 10自v1809以来就内置了SSH。OpenSSH客户端已经安装,您可以通过调用直接使用它 ssh .试试看 Get-Command ssh 它应该会回来的 C:\WINDOWS\System32\OpenSSH\ssh.exe 。您可以连接到任何支持SSH的东西,而无需“开箱即用”的管理权限:

    ssh -l <username> <DNS-Name/IP>
    

    还有一个OpenSSH服务器可用,但必须首先将其作为功能启用。您可能需要管理权限才能启用该功能。

    MS documentation on enabling OpenSSH-Server

    推荐文章