[玩转系统] PSRemoting Linux 和 Windows 简介:如何指导
作者:精品下载站 日期:2024-12-14 13:05:00 浏览:13 分类:玩电脑
PSRemoting Linux 和 Windows 简介:如何指导
PowerShell 在过去几年中发生的重大变化之一是它采用了多种方式与非 Windows 计算机进行交互。其中一项更改是通过 SSH 支持 PSRemoting。通过 SSH 的 PSRemoting 也意味着拥有 PSRemoting Linux!
虽然设置 PSRemoting 以与 SSH 和 Linux 配合使用确实需要一些设置才能工作,但这允许您使用 PowerShell 与 Linux 机器本机交互。
在本教程中,您将学习如何设置 Windows 客户端以使用 PSRemoting 通过 SSH 连接到 Linux 计算机 (CentOS),反之亦然。您将了解如何使用密码和使用证书进行身份验证。
相关:PowerShell 远程处理:终极指南
先决条件
本教程将进行演练。如果您想跟随,请确保您提前准备好以下内容:
- Windows 10 build 1809 或更高版本的计算机。本教程将使用 Windows Server 2019 Standard 作为远程服务器。
- 支持 PowerShell 7 的 Linux 计算机。本教程将使用 CentOS 8。
- Linux 计算机上的 Sudo 权限和 Windows 计算机上的本地管理员权限。初始设置后,可以撤销某些权利。
为通过 SSH 的 PSRemoting 设置 Windows(客户端)
首先,您需要在 Windows 客户端上配置 PSRemoting 客户端 (PowerShell)。为此,您需要设置和配置 PowerShell 7+ 和 OpenSSH。
安装 PowerShell 7+
首先,安装 PowerShell 7+。本教程不会介绍如何执行此操作。要了解如何操作,请查看下面的链接。
安装 OpenSSH
您还需要安装 OpenSSH。 OpenSSH 是 PSRemoting 用于连接到远程 Linux 计算机的软件包。您可以使用 Get-WindowsCapability
cmdlet 通过 PowerShell 安装 OpenSSH,如下所示。
取决于您是否打算将 Windows 主机作为客户端和/或服务器,取决于您应该安装哪些 Windows 功能。如果您从 Windows Server 连接到 Linux,则只需要 OpenSSH 客户端。如果您从 Linux 连接到 Windows Server,则只需要 OpenSSH 服务器。
下面的命令查找名称以 OpenSSH 开头的所有 Windows 功能并安装它们,以便同时安装客户端和服务器。
Get-WindowsCapability -Online | Where-Object {$_.Name -like 'OpenSSH*'} | Add-WindowsCapability -Online
如果您只想安装客户端,请将 Where-Object
脚本块中的过滤器更改为 OpenSSH.Client*
,对于服务器,过滤器应为 OpenSSH.Server*.
相关:SSH 和 PowerShell 入门
启动 SSH 服务器
OpenSSH 安装后,会在端口 22 上打开 Windows 防火墙,但不会启动 OpenSSH 服务器服务来侦听该端口。要在 Windows Server 上启动 OpenSSH 服务器,请运行以下 PowerShell 命令来启动 OpenSSH 服务器并将服务设置为在启动时启动。
Start-Service sshd
Set-Service sshd -StartupType Automatic
配置 OpenSSH 配置
下一步是修改sshd_config 守护进程配置文件。在此文件中,您必须首先确认已启用密码身份验证,并添加 PowerShell 子系统。
本教程的这一部分是使用密码设置最简单的方法。您将在本教程后面学习如何使用证书设置 SSH 身份验证。
- 在您最喜欢的文本编辑器中打开配置文件(位于 C:\ProgramData\ssh\sshd_config)。
2. 确认启用密码身份验证,其中密码身份验证行在开头用 #
注释掉,或者设置为 yes
。
3. 添加PowerShell 子系统。对于 PowerShell 7,添加行:Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -NoLogo
。
-sshs
选项用于允许 PowerShell 7 作为子系统在 SSH 中运行。-NoLogo
选项使 PowerShell 在启动时隐藏版权信息,从而确保启动 SSH 会话时不会出现意外输出。
4. 保存并关闭配置文件。
5. 重新启动 sshd Windows 服务。您可以通过运行 Restart-Service sshd
使用 PowerShell 来执行此操作。
您现在应该已配置好所需的一切,以便使用 PSRemoting 通过 SSH 从(客户端)连接到此 Windows Server(服务器)。
为通过 SSH 的 PSRemoting 设置 Linux(服务器)
接下来是具有类似设置的 Linux;安装 PowerShell 并配置 OpenSSH。
请注意,由于我们使用的是 CentOS,如果您使用不同的发行版,某些命令可能会有所不同。
安装 PowerShell 7+
首先,安装 PowerShell 7。本教程不会介绍如何执行此操作。相反,请务必查看以下链接。
相关:如何在 Windows、macOS 和 Linux 上下载并安装 PowerShell 7
配置 OpenSSH
与 Windows Server 一样,您需要 OpenSSH。但与 Windows 不同的是,OpenSSH 可能已经安装。对于运行 CentOS 8 的本教程,Linux 计算机默认已安装客户端和服务器,但您可以使用以下命令进行检查:
rpm -qa openssh*
如果安装了客户端和服务器,您应该会得到类似于下面的输出。
通过以下方式配置 SSH 配置文件:
- 通过运行
sudo vi /etc/ssh/sshd_config
打开 sshd_config 文件。
2. 添加 PowerShell 子系统,就像在 Windows Server 上一样,将以下行添加到配置文件中。
Subsystem powershell /usr/bin/pwsh -sshs -NoLogo
3. 退出vi 并保存文件。
4. 通过运行 sudo systemctl restart sshd
重新启动 ssh 守护程序以应用更改。
默认情况下,大多数实例(包括 CentOS 8)都会启用密码和公钥身份验证。无需在此处添加这些内容。
使用密码身份验证连接到 Windows/Linux 或从 Windows/Linux 连接
一旦您在 Linux 和 Windows 计算机上完成了所有设置,就可以充分利用您所做的工作了。现在让我们尝试使用密码身份验证从 Windows 连接到 Linux,反之亦然。
基于密码的身份验证看起来和感觉与使用带有用户名和密码的 SSH 很熟悉。
连接命令
要测试通过 SSH 从 Windows 到 Linux 或从 Linux 到 Windows 的 PSRemoting 连接,让我们使用使用 Invoke-Command
cmdlet 的“临时”会话以及使用 的持久会话新-PSSession
。
相关:Invoke-Command:运行远程代码的最佳方式
使用 Invoke-Command
测试 PSRemoting 连接:
- 打开 PowerShell 7 控制台。
2. 设置 Invoke-Command
cmdlet 的参数。在这种情况下,以下参数将使用 SRV1 上名为 User 的本地用户帐户连接到名为 SRV1 的计算机。
$SessionParams = @{
HostName = SRV1
UserName = user
SSHTransport = $true
}
3. 通过展开上面的参数并运行命令(在本例中为脚本块内的 Get-Process
)来运行 Invoke-Command
。
相关:PowerShell Splatting:它是什么以及它如何工作?
Invoke-Command @SessionParams -ScriptBlock {Get-Process}
然后,您应该会看到 SRV1 计算机上所有正在运行的进程的列表。
您还可以建立持久连接,允许您通过以下方式连接和交互运行命令:
- 提供上述参数并将它们传递给
New-PSSession
cmdlet。
2. 使用 Enter-PSSession
cmdlet 以交互方式连接到该会话。
Create a persistent session
$session = New-PSSession @SessionParams
Connect interactively
Enter-PSSession -Session $session
3. 运行上面的 Enter-PSSession
命令后,系统会提示您输入用户密码。经过身份验证后,您将在 PowerShell 中连接到另一台计算机。
请注意,上述命令都不需要通用的 Credential 参数来提供连接的用户名和密码。相反,我们使用了 SSHTransport 参数。 SSH 不使用与 Windows 从一台 Windows 计算机转到另一台 Windows 计算机相同的身份验证过程,因此它无法解释 PSCredential 对象。
相关:使用 PowerShell Get-Credential
cmdlet 和所有凭证。
使用这种方法,您还可以利用断开连接的会话。
设置基于公钥的身份验证
虽然基于密码的身份验证易于设置且易于使用,但它有两个问题。
- 如果没有人手动安全地运行命令,就无法进行身份验证。
- 您正在通过网络发送密码。
在本例中,虽然密码在 SSH 连接中进行了加密,但服务器会以明文形式接收密码。如果服务器以某种方式受到损害,则可能会成为安全问题。
生成公钥/私钥
当使用任何类型的公钥身份验证时,您必须首先从客户端生成公钥。此要求适用于 Linux 和 Windows。
在 Linux 或 Windows Server 计算机上:
- 运行
ssh-keygen
来生成密钥对。
如果您在 Linux 上运行 ssh-keygen
,请注意它默认会生成 RSA 密钥对。许多新的 Linux 操作系统默认不允许使用 RSA 密钥对进行身份验证。要纠正此问题,请使用ssh-keygen -t ed25519
。
2. 系统将提示您输入存储私钥的路径以及用于加密私钥的密码。如果您不想在身份验证期间提供密码,可以将密码留空。
3.仅限 Windows:从 PowerShell 运行以下命令,其中 是您的配置文件的路径(可能C:\Users\UserName )。
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
ssh-add .ssh\id_ed25519
Remove-Item ~.ssh\id_ed25519
Windows 的 OpenSSH 实现有一个 ssh-agent 服务,允许您在登录用户的 Windows 安全上下文中存储私钥。这将使您能够将 SSH 私钥导入到 ssh-agent 并然后从文件系统中删除密钥以进一步保护它。
4. 现在将生成的公钥 (\.ssh\id_ed25519.pub) 复制到您要连接的服务器。 Windows 没有提供执行此复制的工具,因此可以使用 SCP 来完成。运行以下命令将公钥复制到 Linux 计算机。
scp C:\Users\Username.ssh\id_ed25519.pub username@ServerB:~/.ssh/authorized_keys
要从 Linux 复制到 Windows:
scp ~/.ssh/id_ed25519.pub administrator@ServerA:.ssh/authorized_keys
5. 输入登录用户的密码。输入后,PowerShell/Bash 将复制密钥,并且您将与远程计算机断开连接。
使用公钥身份验证连接到 Windows/Linux 或从 Windows/Linux 连接
设置公钥和私钥后,连接到 Windows 和 Linux 应该很容易。它与基于密码的身份验证几乎相同。
要在 Windows 上使用公钥进行连接,请使用上面连接命令中所示的相同命令。您只会注意到一处差异;不会提示您输入凭据。
下面是使用 -v
开关从 Linux 连接到 Windows 的示例,以查看连接过程中发生的情况。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag