Windows 11 Pro ISO文件在哪下载最新版?如何下载原装纯净版Win11 ?点击进入 持续更新!
如何在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的主要步骤有两个。第一步是配置要远程连接的计算机。您将需要执行以下操作:
- 安装最新版本的PowerShell。在撰写本文时,它是PowerShell v7。
- 安装和配置OpenSSH服务器
完成后,您将需要配置管理PC。即,您要用来管理远程设备的计算机:
- 安装最新版本的PowerShell。
- 安装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。
在PowerShell窗口中,运行以下两个命令以将OpenSSH客户端和服务器组件添加到设备。客户端不是严格需要的,但是它将帮助我们测试SSH服务器是否正常工作。安装OpenSSH服务器组件还会在TCP端口22上为所有网络连接配置文件创建并启用Windows防火墙入站连接规则。
1 2 | Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 |
现在让我们启动sshd服务并将其设置为自动启动:
1 2 | Start-Service sshd Set-Service -Name sshd -StartupType ‘Automatic’ |
要测试SSH是否正常运行,可以使用SSH命令从PowerShell窗口本地连接到它。运行以下命令,用本地设备上的用户名替换“ russell”。
1 | ssh russell@localhost |
键入“是”表示您要连接,然后输入您的帐户密码。要退出SSH会话,请键入exit并按ENTER。
配置SSH以进行PowerShell远程处理
现在SSH在设备上运行了,我们可以将其配置为与PowerShell Remoting一起使用。我们需要编辑sshd_config文件,该文件位于C:\ ProgramData \ ssh中。由于sshd_config位于受保护的目录中,因此我们需要以管理员身份运行记事本才能对其进行编辑。
- 在任务栏的搜索框中键入记事本,确保在搜索结果中选择了记事本。在右侧的选项中,单击向下箭头以展开可用的选项,然后单击“以管理员身份运行”。
- 在记事本中,单击CTRL + O以打开文件。
- 在“打开”对话框中,将C:\ ProgramData \ ssh粘贴到“文件名”字段中,然后按Enter。
- 使用“文件名”字段右侧的下拉菜单,将“文本文档(* .txt)”更改为“所有文件”。
- 在文件列表中双击sshd_config将其打开。
在文件中,找到以下行:
#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中存在一个错误,该错误会阻止您在子系统可执行路径中使用空格。
现在保存并关闭文件。
若要应用更改,请使用Restart-Service PowerShell cmdlet重新启动sshd服务:
1 | Restart-Service sshd |
测试PowerShell远程处理和SSH
在远程连接到设备之前,让我们检查PowerShell Remoting首先在本地工作。需要在PowerShell中而不是Windows PowerShell中执行以下步骤,因为它不支持SSH作为远程协议。要打开PowerShell,请在任务栏上的搜索框中键入powershell。在搜索结果中,请确保单击PowerShell,而不是Windows PowerShell。
在PowerShell窗口中,使用New-PSSession在本地设备上创建一个新的远程会话。出现提示时,输入您帐户的密码。
1 | $session = New-PSSession -HostName localhost |
现在,让我们使用Get-PSSession检查会话详细信息。如您在#IMAGE中所见,SSH在“传输”下列出。
1 | Get-PSSession |
配置您的管理设备
现在剩下要做的就是配置用于管理远程PC的设备。抓住从GitHub最新版本的PowerShell的位置并安装它。现在,使用Windows PowerShell安装OpenSSH客户端。重复上述步骤,但是这次不需要OpenSSH服务器组件。只需安装客户端组件:
1 | Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 |
就是这样!如果您具有到端口22上的远程设备的直接网络连接,则应该能够使用SSH建立PowerShell Remoting会话。您可以使用Enter-PSSession进行连接,如下所示。指定-Hostname参数可确保PowerShell使用SSH作为连接协议。
将WIN10-1替换为您要连接的远程设备的名称。如果未指定,PowerShell将使用本地计算机的用户名。要使用域用户帐户登录,请使用username:domain格式,如下所示:
1 | Enter-PSSession -HostName WIN10-1 -UserName russell:ad.contoso.com |
如果您使用-Hostname或-SSHTransport参数,Invoke-Command和New-PSSession也支持SSH协议。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun34642.html