PowerShell 6. *使用SSL证书和UBUNTU进行远程处理

时间:2018-08-06 17:41:54

标签: powershell ubuntu ssl remoting

我有一个UBUNTU 16.04盒子(我们称之为 EARTH )和一个Windows 2012 R2盒子(我们称之为 MARS )。使用Windows框中的以下命令( MARS ),我正在生成计划用于PS Remoting的自签名证书。

CMD1: $ Cert = New-SelfSignedCertificate -CertstoreLocation Cert:\ LocalMachine \ My -DnsName“ myHost”

CMD2: 出口证书-证书$证书-FilePath C:\ temp \ cert

MARS (Windows框)上,存在一个WSMAN侦听器,该侦听器使用刚刚创建的经过认证的自签名证书的指纹创建。

CMD3: New-Item -Path WSMan:\ LocalHost \ Listener-传输HTTPS -Address * -CertificateThumbPrint $ Cert.Thumbprint –Force

我正在尝试从 EARTH (UBUNTU框)到 MARS

发起PowerShell Remoting会话。

有人知道如何将证书导入EARTH(UBUNTU服务器),以便Powershell可以将其用于远程会话吗?

PS会话的来源:EARTH,UBUNTU服务器

PS会话的目标:MARS,即用于生成证书的Windows 2012 R2框。

EARTH(UBUNTU服务器)正在运行PowerShell版本6.1 Preview.2

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

导出/导入证书cmdlet是此用例的目标。 至于Ubuntu,只需在Ubuntu上使用cmdline,请参阅Ubuntu论坛讨论:

  

在Ubuntu中:

    • 转到/ usr / local / share / ca-certificates /
    • 创建一个新文件夹,即“ sudo mkdir school”
    • 将.crt文件复制到学校文件夹中
    • 确保许可权确定(文件夹为755,文件夹为644) 文件)
    • 运行“ sudo update-ca-certificates”
  

https://askubuntu.com/questions/645818/how-to-install-certificates-for-command-line

或者直接从Ubuntu获得帮助信息。

  

安装证书

     

您可以安装密钥文件server.key和证书文件   通过运行运行server.crt或CA颁发的证书文件   在终端提示符处输入以下命令:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private
  

现在只需配置任何具有使用功能的应用程序   公钥加密,以使用证书和密钥文件。对于   例如,Apache可以提供HTTPS,Dovecot可以提供IMAPS和   POP3S等

     

https://help.ubuntu.com/lts/serverguide/certificates-and-security.html

MS已提供有关如何设置和使用它的逐步指南。具体而言,以下内容直接针对Ubuntu。这样可以进行远程处理,而无需使用您正在使用的其他证书步骤。

  

通过SSH进行PowerShell远程处理

     

在Windows计算机上安装

     
      
  1. 从GitHub安装最新的Windows PowerShell版本◦您可以通过查看以下内容来判断它是否具有SSH远程处理支持:   New-PSSession的参数集
  2.   
Get-Command New-PSSession -syntax
New-PSSession [-Name <string[]>] [-HostName <string>] [-UserName <string>] [-KeyPath <string>] [<CommonParameters>]
  
      
  1. 按照安装说明从GitHub安装最新的Win32 Open SSH版本
  2.   
  3. 在安装Win32的位置上编辑sshd_config文件。打开SSH◦确保已启用密码身份验证   wordPasswordAuthentication是
  4.   
     

◦添加PowerShell子系统条目
  ◾子系统powershell

PowerShell_Install_Path\powershell.exe -sshs -NoLogo -NoProfile
  

◦可以选择启用密钥身份验证
  ◾RSA认证是   ◾PubkeyAuthentication是

     

4。重新启动sshd服务◦Restart-Servicesshd

     

在Linux(Ubuntu 14.04)计算机上的设置:

     

1。从GitHub安装最新的PowerShell for Linux构建◦您可以通过查看参数来判断它是否支持SSH远程处理   为New-PSSession设置

Get-Command New-PSSession-语法     New-PSSession [-名称] [-主机名] [-用户名] [-KeyPath] []

  

2。根据需要安装Ubuntu SSH◦sudo apt install openssh-client

sudo apt install openssh-server
  

3。在/ etc / ssh位置编辑sshd_config文件◦确保已启用密码身份验证   ◾PasswordAuthentication是

     

◦添加PowerShell子系统条目
  ◾子系统PowerShell       powershell -sshs -NoLogo -NoProfile

     

◦可以选择启用密钥身份验证
  ◾RSA认证是   ◾PubkeyAuthentication是

     

4。重启sshd服务◦sudo服务ssh restart

     

PowerShell远程处理示例:

     

测试远程处理的最简单方法是仅在单个   机。在这里,我将创建返回到同一台计算机的远程会话   在Linux机器上。请注意,我正在使用PowerShell cmdlet   命令提示符,因此我们看到ssh的提示,要求验证主机   计算机以及密码提示。您可以在   Windows机器,以确保远程操作在那里然后远程进行   只需更改主机名即可在机器之间切换。

     

Linux到Linux

PS /home/TestUser> $session = New-PSSession -HostName UbuntuVM1 -UserName TestUser

The authenticity of host 'UbuntuVM1 (9.129.17.107)' cannot be established.

ECDSA key fingerprint is SHA256:2kCbnhT2dUE6WCGgVJ8Hyfu1z2wE4lifaJXLO7QJy0Y.

Are you sure you want to continue connecting (yes/no)?

TestUser@UbuntuVM1s password:

PS /home/TestUser> $session

 Id Name            ComputerName    ComputerType    State         ConfigurationName     Availability
 -- ----            ------------    ------------    -----         -----------------     ------------
  1 SSH1            UbuntuVM1       RemoteMachine   Opened        DefaultShell             Available
  

https://github.com/PowerShell/PowerShell/blob/866b558771a20cca3daa47f300e830b31a24ee95/docs/new-features/remoting-over-ssh/README.md