如何在Windows 10中配置PowerShell SSH远程处理

如何在Windows 10中配置PowerShell SSH远程处理

Microsoft在PowerShell 6中引入了Secure Shell(SSH)作为PowerShell Remoting的传输方式。旧版本的PowerShell(Windows PowerShell)仅限于HTTP / HTTPS和Windows远程管理(WinRM)。WinRM / HTTP适用于Active Directory(AD)环境。身份验证和通信得到保护。WinRM / HTTPS用于访问工作组计算机,即未加入AD域的计算机。

但是要使用HTTPS,您需要获取,设置和管理证书。那是一个痛苦。此外,您需要在设备上配置受信任的主机,然后它们才能接受WinRM / HTTPS连接。

为了解决这些问题,Microsoft在PowerShell 6中引入了SSH作为PowerShell Remoting的传输选项。SSH使用密码和公用/专用密钥对进行身份验证,因此证书不是强制性的,就像使用HTTPS时一样。由于SSH仅在PowerShell 6和更高版本中受支持,因此您需要在Windows中安装最新版本的PowerShell。Windows 10默认安装了旧版Windows PowerShell 5.1。

配置PowerShell Remoting以使用SSH的主要步骤有两个。第一步是配置要远程连接的计算机。您将需要执行以下操作:

  1. 安装最新版本的PowerShell。在撰写本文时,它是PowerShell v7。
  2. 安装和配置OpenSSH服务器

完成后,您将需要配置管理PC。即,您要用来管理远程设备的计算机:

 

  1. 安装最新版本的PowerShell。
  2. 安装OpenSSH客户端

配置远程设备

让我们从配置要远程连接的设备开始。

安装最新版本的PowerShell

安装PowerShell的最佳方法是从GitHub此处获取最新的.msi安装程序文件。一旦安装了PowerShell,最新版本的PowerShell和Windows PowerShell 5.1将可以并行工作。Windows PowerShell仅支持某些cmdlet。因此,在本教程中,我们将需要使用Windows PowerShell和刚安装的最新版本的PowerShell。

安装OpenSSH

第一步是在Windows中安装OpenSSH。为此,我们将使用Windows PowerShell和Add-WindowsCapability cmdlet。要打开Windows PowerShell,请在任务栏上的搜索框中键入Windows powershell,在搜索结果中单击Windows PowerShell右侧的箭头(>),然后在右侧的选项列表中单击以管理员身份运行。可能会要求您输入管理员凭据或同意运行PowerShell。

图片#1扩大 
Figure1-6-1159x1024-1
在Windows 10中配置PowerShell SSH远程处理(图片来源:Russell Smith)

在PowerShell窗口中,运行以下两个命令以将OpenSSH客户端和服务器组件添加到设备。客户端不是严格需要的,但是它将帮助我们测试SSH服务器是否正常工作。安装OpenSSH服务器组件还会在TCP端口22上为所有网络连接配置文件创建并启用Windows防火墙入站连接规则。

 

 

图片#2扩大 
Figure2-5-1280x765-1
在Windows 10中配置PowerShell SSH远程处理(图片来源:Russell Smith)

现在让我们启动sshd服务并将其设置为自动启动:

要测试SSH是否正常运行,可以使用SSH命令从PowerShell窗口本地连接到它。运行以下命令,用本地设备上的用户名替换“ russell”。

键入“是”表示您要连接,然后输入您的帐户密码。要退出SSH会话,请键入exit并按ENTER

配置SSH以进行PowerShell远程处理

现在SSH在设备上运行了,我们可以将其配置为与PowerShell Remoting一起使用。我们需要编辑sshd_config文件,该文件位于C:\ ProgramData \ ssh中。由于sshd_config位于受保护的目录中,因此我们需要以管理员身份运行记事本才能对其进行编辑。

  • 在任务栏的搜索框中键入记事本,确保在搜索结果中选择了记事本。在右侧的选项中,单击向下箭头以展开可用的选项,然后单击“以管理员身份运行”
  • 在记事本中,单击CTRL + O以打开文件。
  • 在“打开”对话框中,将C:\ ProgramData \ ssh粘贴到“文件名”字段中,然后按Enter
  • 使用“文件名”字段右侧的下拉菜单,将“文本文档(* .txt)”更改为“所有文件”
  • 在文件列表中双击sshd_config将其打开。
图片#3扩大 
Figure3-1
在Windows 10中配置PowerShell SSH远程处理(图片来源:Russell Smith)

在文件中,找到以下行:

 

#PasswordAuthentication是

编辑它以删除该行开头的哈希,如下所示:

密码验证是

最后,我们需要在目标计算机上创建一个PowerShell主机进程作为SSH子系统。更改sshd_config的#no no default defaults of no systems部分:

#覆盖没有子系统的默认值
子系统sftp sftp-server.exe

为此:

#覆盖没有子系统的默认值
#子系统sftp sftp-server.exe
子系统powershell c:/progra~1/powershell/7/pwsh.exe -sshs -NoLogo

请注意,如果您使用的是旧版本或更高版本的PowerShell,则可能需要更改PowerShell(pwsh.exe)运行时的路径。在文件路径中,我们为“ Program Files”使用8.3的简称。这是因为Windows的OpenSSH中存在一个错误,该错误会阻止您在子系统可执行路径中使用空格。

现在保存并关闭文件。

图片#4扩大 
Figure4-1-1280x727-1
在Windows 10中配置PowerShell SSH远程处理(图片来源:Russell Smith)

若要应用更改,请使用Restart-Service PowerShell cmdlet重新启动sshd服务:

 

测试PowerShell远程处理和SSH

在远程连接到设备之前,让我们检查PowerShell Remoting首先在本地工作。需要在PowerShell中而不是Windows PowerShell中执行以下步骤,因为它不支持SSH作为远程协议。要打开PowerShell,请在任务栏上的搜索框中键入powershell。在搜索结果中,请确保单击PowerShell,而不是Windows PowerShell。

在PowerShell窗口中,使用New-PSSession在本地设备上创建一个新的远程会话。出现提示时,输入您帐户的密码。

现在,让我们使用Get-PSSession检查会话详细信息。如您在#IMAGE中所见,SSH在“传输”下列出。

 

图片#5扩大 
Figure5
在Windows 10中配置PowerShell SSH远程处理(图片来源:Russell Smith)

配置您的管理设备

现在剩下要做的就是配置用于管理远程PC的设备。抓住从GitHub最新版本的PowerShell的位置并安装它。现在,使用Windows PowerShell安装OpenSSH客户端。重复上述步骤,但是这次不需要OpenSSH服务器组件。只需安装客户端组件:

就是这样!如果您具有到端口22上的远程设备的直接网络连接,则应该能够使用SSH建立PowerShell Remoting会话。您可以使用Enter-PSSession进行连接,如下所示。指定-Hostname参数可确保PowerShell使用SSH作为连接协议。

将WIN10-1替换为您要连接的远程设备的名称。如果未指定,PowerShell将使用本地计算机的用户名。要使用域用户帐户登录,请使用username:domain格式,如下所示:

如果您使用-Hostname或-SSHTransport参数,Invoke-Command和New-PSSession也支持SSH协议。

未经允许不得转载:励志言 » 如何在Windows 10中配置PowerShell SSH远程处理

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏