[玩转系统] 通过 SSH 进行 PowerShell 远程处理
作者:精品下载站 日期:2024-12-14 02:58:30 浏览:15 分类:玩电脑
通过 SSH 进行 PowerShell 远程处理
概述
PowerShell 远程处理通常使用 WinRM 进行连接协商和数据传输。 SSH 现在可用于 Linux 和 Windows 平台,并允许真正的多平台 PowerShell 远程处理。
WinRM 为 PowerShell 远程会话提供强大的托管模型。基于 SSH 的远程处理当前不支持远程端点配置和 Just Enough Administration (JEA)。
SSH 远程处理允许您在 Windows 和 Linux 计算机之间执行基本的 PowerShell 会话远程处理。 SSH 远程处理在目标计算机上创建一个 PowerShell 主机进程作为 SSH 子系统。最终我们将实现一个类似于 WinRM 的通用托管模型,以支持端点配置和 JEA。
New-PSSession
、Enter-PSSession
和 Invoke-Command
cmdlet 现在具有新的参数集来支持这一新的远程连接。
[-HostName <string>] [-UserName <string>] [-KeyFilePath <string>]
要创建远程会话,请使用 HostName 参数指定目标计算机,并使用 UserName 提供用户名。以交互方式运行 cmdlet 时,系统会提示您输入密码。您还可以使用带有 KeyFilePath 参数的私钥文件进行 SSH 密钥身份验证。创建用于 SSH 身份验证的密钥因平台而异。
一般设置信息
所有计算机上都必须安装 PowerShell 6 或更高版本以及 SSH。安装 SSH 客户端 (ssh.exe
) 和服务器 (sshd.exe
),以便您可以远程访问和远程访问计算机。适用于 Windows 的 OpenSSH 现已在 Windows 10 build 1809 和 Windows Server 2019 中提供。有关详细信息,请参阅使用 OpenSSH 管理 Windows。对于 Linux,安装适合您的平台的 SSH,包括 sshd 服务器。您还需要从 GitHub 安装 PowerShell 才能获得 SSH 远程处理功能。必须将 SSH 服务器配置为创建 SSH 子系统以在远程计算机上托管 PowerShell 进程。并且,您必须启用密码或基于密钥身份验证。
在Windows计算机上安装SSH服务
安装最新版本的 PowerShell。有关更多信息,请参阅在 Windows 上安装 PowerShell。
您可以通过列出
New-PSSession
参数集来确认 PowerShell 是否支持 SSH 远程处理。您会注意到有一些以 SSH 开头的参数集名称。这些参数集包括SSH参数。(Get-Command New-PSSession).ParameterSets.Name
Name ---- SSHHost SSHHostHashParam
安装最新的 Win32 OpenSSH。有关安装说明,请参阅 OpenSSH 入门。
笔记
如果要将 PowerShell 设置为 OpenSSH 的默认 shell,请参阅为 OpenSSH 配置 Windows。
编辑位于
$env:ProgramData\ssh
的sshd_config
文件。确保启用密码验证:
PasswordAuthentication yes
创建在远程计算机上托管 PowerShell 进程的 SSH 子系统:
Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -nologo
笔记
从 PowerShell 7.4 开始,在 SSH 服务器模式下运行 PowerShell 时不再需要使用
-nologo
参数。笔记
PowerShell 可执行文件的默认位置是
c:/progra~1/powershell/7/pwsh.exe
。该位置可能会有所不同,具体取决于您安装 PowerShell 的方式。对于任何包含空格的文件路径,必须使用 8.3 短名称。 Windows 版 OpenSSH 中存在一个错误,该错误会阻止空格在子系统可执行路径中工作。有关更多信息,请参阅此 GitHub 问题。
Windows 中
Program Files
文件夹的 8.3 简称通常为Progra~1
。但是,您可以使用以下命令来确保:Get-CimInstance Win32_Directory -Filter 'Name="C:\Program Files"' | Select-Object EightDotThreeFileName
EightDotThreeFileName --------------------- c:\progra~1
(可选)启用密钥身份验证:
PubkeyAuthentication yes
有关更多信息,请参阅管理 OpenSSH 密钥。
重新启动 sshd 服务。
Restart-Service sshd
将 OpenSSH 的安装路径添加到 Path 环境变量中。例如,
C:\Program Files\OpenSSH\
。此条目允许找到ssh.exe
。
在 Ubuntu Linux 计算机上安装 SSH 服务
安装最新版本的 PowerShell,请参阅在 Ubuntu 上安装 PowerShell。
-
安装 Ubuntu OpenSSH 服务器。
sudo apt install openssh-client sudo apt install openssh-server
编辑位于
/etc/ssh
位置的sshd_config
文件。确保启用密码验证:
PasswordAuthentication yes
(可选)启用密钥身份验证:
PubkeyAuthentication yes
有关在 Ubuntu 上创建 SSH 密钥的更多信息,请参阅 ssh-keygen 的联机帮助页。
添加 PowerShell 子系统条目:
Subsystem powershell /usr/bin/pwsh -sshs -nologo
笔记
PowerShell 可执行文件的默认位置是
/usr/bin/pwsh
。该位置可能会有所不同,具体取决于您安装 PowerShell 的方式。笔记
从 PowerShell 7.4 开始,在 SSH 服务器模式下运行 PowerShell 时不再需要使用
-nologo
参数。重新启动 ssh 服务。
sudo systemctl restart sshd.service
在 macOS 计算机上安装 SSH 服务
安装最新版本的 PowerShell。有关更多信息,请参阅在 macOS 上安装 PowerShell。
请按照以下步骤确保启用 SSH 远程处理:
- 打开
系统设置
。
- 打开
- 单击
常规
- 单击
共享
。 - 选中
远程登录
以设置远程登录:打开
。 - 允许适当的用户访问。
编辑位于 /private/etc/ssh/sshd_config
位置的 sshd_config
文件。
使用文本编辑器,例如 nano:
sudo nano /private/etc/ssh/sshd_config
确保启用密码验证:
PasswordAuthentication yes
添加 PowerShell 子系统条目:
Subsystem powershell /usr/local/bin/pwsh -sshs -nologo
笔记
PowerShell 可执行文件的默认位置是 /usr/local/bin/pwsh
。该位置可能会有所不同,具体取决于您安装 PowerShell 的方式。
笔记
从 PowerShell 7.4 开始,在 SSH 服务器模式下运行 PowerShell 时不再需要使用 -nologo
参数。
(可选)启用密钥身份验证:
PubkeyAuthentication yes
重新启动 sshd 服务。
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
笔记
升级操作系统时,SSH 配置文件可能会被覆盖。请务必在升级后检查配置文件。
验证
通过 SSH 的 PowerShell 远程处理依赖于 SSH 客户端和 SSH 服务之间的身份验证交换,本身不实现任何身份验证方案。结果是任何配置的身份验证方案(包括多重身份验证)均由 SSH 处理,并且独立于 PowerShell。例如,您可以将 SSH 服务配置为需要公钥身份验证和一次性密码以增加安全性。多重身份验证的配置超出了本文档的范围。请参阅 SSH 文档,了解如何正确配置多重身份验证,并在尝试将其与 PowerShell 远程处理一起使用之前验证其在 PowerShell 之外是否正常工作。
笔记
用户在远程会话中保留相同的权限。这意味着,管理员可以访问提升的 shell,而普通用户则不能。
PowerShell 远程处理示例
测试远程处理的最简单方法是在一台计算机上进行尝试。在此示例中,我们创建一个与同一台 Linux 计算机的远程会话。我们以交互方式使用 PowerShell cmdlet,因此我们会看到 SSH 的提示,要求验证主机并提示输入密码。您可以在 Windows 计算机上执行相同的操作,以确保远程处理正常工作。然后,通过更改主机名在计算机之间进行远程。
Linux 到 Linux
$session = New-PSSession -HostName UbuntuVM1 -UserName TestUser
The authenticity of host 'UbuntuVM1 (9.129.17.107)' can't be established.
ECDSA key fingerprint is SHA256:2kCbnhT2dUE6WCGgVJ8Hyfu1z2wE4lifaJXLO7QJy0Y.
Are you sure you want to continue connecting (yes/no)?
TestUser@UbuntuVM1s password:
$session
Id Name ComputerName ComputerType State ConfigurationName Availability
-- ---- ------------ ------------ ----- ----------------- ------------
1 SSH1 UbuntuVM1 RemoteMachine Opened DefaultShell Available
Enter-PSSession $session
[UbuntuVM1]: PS /home/TestUser> uname -a
Linux TestUser-UbuntuVM1 4.2.0-42-generic 49~16.04.1-Ubuntu SMP Wed Jun 29 20:22:11 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[UbuntuVM1]: PS /home/TestUser> Exit-PSSession
Invoke-Command $session -ScriptBlock { Get-Process pwsh }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName PSComputerName
------- ------ ----- ----- ------ -- -- ----------- --------------
0 0 0 19 3.23 10635 635 pwsh UbuntuVM1
0 0 0 21 4.92 11033 017 pwsh UbuntuVM1
0 0 0 20 3.07 11076 076 pwsh UbuntuVM1
Linux 到 Windows
Enter-PSSession -HostName WinVM1 -UserName PTestName
PTestName@WinVM1s password:
[WinVM1]: PS C:\Users\PTestName\Documents> cmd /c ver
Microsoft Windows [Version 10.0.10586]
窗口到窗口
C:\Users\PSUser\Documents>pwsh.exe
PowerShell
Copyright (c) Microsoft Corporation. All rights reserved.
$session = New-PSSession -HostName WinVM2 -UserName PSRemoteUser
The authenticity of host 'WinVM2 (10.13.37.3)' can't be established.
ECDSA key fingerprint is SHA256:kSU6slAROyQVMEynVIXAdxSiZpwDBigpAF/TXjjWjmw.
Are you sure you want to continue connecting (yes/no)?
Warning: Permanently added 'WinVM2,10.13.37.3' (ECDSA) to the list of known hosts.
PSRemoteUser@WinVM2's password:
$session
Id Name ComputerName ComputerType State ConfigurationName Availability
-- ---- ------------ ------------ ----- ----------------- ------------
1 SSH1 WinVM2 RemoteMachine Opened DefaultShell Available
Enter-PSSession -Session $session
[WinVM2]: PS C:\Users\PSRemoteUser\Documents> $PSVersionTable
Name Value
---- -----
PSEdition Core
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
SerializationVersion 1.1.0.1
BuildVersion 3.0.0.0
CLRVersion
PSVersion 6.0.0-alpha
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
GitCommitId v6.0.0-alpha.17
[WinVM2]: PS C:\Users\PSRemoteUser\Documents>
局限性
sudo 命令在 Linux 计算机的远程会话中不起作用。
通过 SSH 的 PSRemoting 不支持配置文件,并且无权访问
$PROFILE
。进入会话后,您可以通过使用完整文件路径点获取配置文件来加载配置文件。这与 SSH 配置文件无关。您可以将 SSH 服务器配置为使用 PowerShell 作为默认 shell 并通过 SSH 加载配置文件。有关详细信息,请参阅 SSH 文档。在 PowerShell 7.1 之前,通过 SSH 进行远程处理不支持第二跳远程会话。此功能仅限于使用 WinRM 的会话。 PowerShell 7.1 允许
Enter-PSSession
和Enter-PSHostProcess
在任何交互式远程会话中工作。
参见
- 在 Linux 上安装 PowerShell
- 在 macOS 上安装 PowerShell
- 在 Windows 上安装 PowerShell
- 使用 OpenSSH 管理 Windows
- 管理 OpenSSH 密钥
- Ubuntu SSH
猜你还喜欢
- 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