当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

作者:精品下载站 日期:2024-12-14 23:30:50 浏览:15 分类:玩电脑

如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器


基于OpenSSH软件包的SSH服务器是所有现代Windows版本操作系统的一部分。在本文中,我们将向您展示如何在 Windows 10/11 和 Windows Server 2022/2019 上安装和配置 OpenSSH 服务器,并通过安全 SSH 连接远程连接到它(就像在 Linux 中一样)。

如何在Windows上安装OpenSSH服务器?

OpenSSH Server 软件包是所有现代版本的 Windows 10(从 1803 开始)、Windows 11 和 Windows Server 2022/2019 的一部分,作为按需功能 (FoD)。要安装 OpenSSH 服务器,请打开提升的 PowerShell 提示符并运行以下命令:

Get-WindowsCapability -Online | Where-Object Name -like ‘OpenSSH.Server*’ | Add-WindowsCapability -Online 

或者使用 DISM:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

如果您的计算机直接连接到 Internet,则将在 Windows 上下载并安装 OpenSSH.Server 包。

您还可以通过现代的设置面板(设置 -> 应用和功能 -> 可选功能 -> 添加功能)在 Windows 10/11 上安装 OpenSSH。在列表中找到打开 SSH 服务器,然后单击安装

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

您还可以从此处安装远程服务器管理工具 (RSAT)。

在离线(离线)环境中的计算机上,您可以从 Feature on Demand ISO 映像安装 OpenSSH 服务器(可通过 Microsoft 网站上的帐户获取:MSDN 或 my.visualstudio.com)。下载 ISO 并将其内容解压到 E:\FOD 文件夹(您只能解压文件

OpenSSH-Server-Package~31bf3856ad364e35~amd64~~.cab

)并从本地存储库安装 Windows 功能:

Add-WindowsCapability -Name OpenSSH.Server~~~~0.0.1.0 -Online -Source E:\FOD

GitHub 上的官方 Microsoft 存储库 (https://github.com/PowerShell/Win32-OpenSSH/releases/) 中还提供了适用于 Windows 的 OpenSSH 的 MSI 安装程序。例如,对于 Windows 10 x64,您需要下载并安装 OpenSSH-Win64-v8.9.1.0.msi 软件包。以下 PowerShell 命令将下载 MSI 文件并在您的计算机上安装 OpenSSH 客户端和服务器:

Invoke-WebRequest https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.9.1.0p1-Beta/OpenSSH-Win64-v8.9.1.0.msi -OutFile $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi -UseBasicParsing
msiexec /i $HOME\Downloads\OpenSSH-Win64-v8.9.1.0.msi

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

您也可以在以前的 Windows 版本(Windows 8.1、Windows Server 2016/2012R2/2012)中安装 OpenSSH 服务器。请查看“如何在 Windows 上配置 SFTP 服务器(SSH FTP)?”一文中如何安装和配置 Win32-OpenSSH 的示例。 ”。

要确保 OpenSSH 服务器已安装,请运行以下命令:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'
State : Installed

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

在 Windows 上配置 SSH 服务器

在Windows上安装OpenSSH服务器后,添加了两个服务:

  • ssh-agent(OpenSSH 身份验证代理)——如果您配置了 SSH 密钥身份验证,可用于管理私钥;

  • sshd(OpenSSH SSH 服务器)。

您需要将 sshd 服务的启动类型更改为自动,并使用 PowerShell 启动该服务:

Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

使用 netstat 命令确保 SSH 服务器正在运行并等待 TCP 端口 22 上的连接:

netstat -na| find ":22"

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

确保 Windows Defender 防火墙允许通过 TCP 端口 22 到 Windows 的入站连接:

Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

如果规则被禁用 (Enabled=False) 或丢失,您可以使用 New-NetFirewallRule cmdlet 创建新的入站规则:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

默认情况下,关键的 OpenSSH 组件位于以下文件夹中:

  • OpenSSH 服务器可执行文件:

    C:\Windows\System32\OpenSSH\

    (sshd.exe、ssh.exe、ssh-keygen.exe、sftp.exe 等)

  • sshd_config 文件(在服务第一次启动后创建):

    C:\ProgramData\ssh
  • authorized_keys 文件和密钥可以存储在用户配置文件文件夹中:

    %USERPROFILE%\.ssh\

sshd_config:OpenSSH 服务器配置文件

您可以在配置文件中更改 OpenSSH 服务器设置:

%programdata%\ssh\sshd_config

。这是一个带有一组指令的纯文本文件。您可以使用任何文本编辑器进行编辑:

start-process notepad C:\Programdata\ssh\sshd_config

例如,要拒绝特定域用户帐户(或指定域中的所有用户)的 SSH 连接,请将以下指令添加到文件末尾:

DenyUsers a-d\[email protected]
DenyUsers corp\*

仅允许 SSH 连接到特定域安全组:

AllowGroups a-d\sshadmins

您可以允许访问本地用户组:

AllowGroups sshadmins

默认情况下,所有 Windows 用户都可以连接到 OpenSSH。 sshd_config 文件中的指令按以下顺序处理:DenyUsers、AllowUsers、DenyGroups、AllowGroups。

您可以拒绝具有管理员权限的帐户的 SSH 登录。在这种情况下,如果您需要在 SSH 会话中执行任何特权操作,则必须使用 runas。

DenyGroups Administrators

以下指令允许您使用 SSH 私钥或密码访问 Windows。

PubkeyAuthentication yes
PasswordAuthentication yes

您可以使用 Port 指令在 sshd_config 配置文件中更改接受 OpenSSH 服务器连接的默认 TCP/22 端口。

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

对 sshd_config 文件进行任何更改后,需要重新启动 sshd 服务

restart-service sshd

如何通过 SSH 连接到远程 Windows 计算机?

现在您可以尝试使用 SSH 客户端连接到 Windows 10 计算机(在本示例中我使用的是 putty)。

您可以使用内置的 Windows SSH 客户端连接到远程主机。为此,请打开命令提示符并运行以下命令:

ssh [email protected]

在此示例中,max 是远程 Windows 计算机上的用户名,192.168.13.12 是计算机的 IP 地址或 DNS 名称。

请注意,通过 SSH 连接到 Windows 时可以使用以下用户名格式:

  • max@server1

    - 本地 Windows 用户

  • [email protected]@server1

    - Active Directory 用户或 Microsoft/Azure 帐户(使用 UserPrincipalName 格式)

  • a-d\max@server1

    - NetBIOS 名称格式

在 Active Directory 域中,您可以在 SSH 中使用 Kerberos 身份验证。为此,您需要在 sshd_config 中启用以下指令:

GSSAPIAuthentication yes

现在,您可以通过域用户会话从加入域的 Windows 计算机透明地连接到 SSH 服务器。在这种情况下,将不会请求用户的密码,并且将通过 Kerberos 执行 SSO 身份验证:

ssh -K server1

第一次连接时,系统会提示您将主机添加到已知 SSH 主机列表中(

C:\Users\your_user\.ssh\known_hosts

)。

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

点击

Yes

,然后使用您的 Windows 用户帐户登录。

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

如果 SSH 连接成功,您将看到 cmd.exe shell 提示符。

admin@win10pc C:\Users\admin>

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

您可以在 SSH 命令提示符中运行不同的命令、脚本和应用程序。

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

我更喜欢在 PowerShell 控制台中工作。要启动它,请运行:

powershell.exe

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

要将 OpenSSH 中的默认 cmd.exe shell 更改为 PowerShell,请使用以下 PowerShell 命令更改注册表:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

重新启动 SSH 连接并确保 PowerShell 现在用作默认 SSH shell(这由提示符指示)

PS C:\Users\admin>

)。

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

PowerShell 提示符已在我的 SSH 会话中启动,其中常用功能起作用:选项卡自动完成、PSReadLine 语法突出显示、命令历史记录等。如果当前用户是本地管理员组的成员,则即使启用了 UAC,所有会话命令也会以提升的方式执行。

Windows 上的 OpenSSH 服务器可用于各种 SSH 隧道场景。

在Windows中检查SSH连接日志

默认情况下,在 Windows 中,SSH 服务器连接日志不会写入文本文件,而是通过 Windows 事件跟踪 (ETW) 写入单独的事件日志。打开事件查看器控制台(

eventvwr.msc

)并导航至应用程序和服务日志 -> OpenSSH -> 操作

如果您使用密码成功连接到 SSH 服务器,日志中将出现一个事件:

EventID: 4
sshd: Accepted password for root from 192.168.1.53 port 65749 ssh2

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

如果执行了 SSH 密钥身份验证,您将看到以下事件:

sshd: Accepted publickey for locadm from 192.168.1.53 port 61426 
ssh2: ED25519 SHA256:FEHDEC/G42FS23209C2KMb4335923pigN31s3qMK322lGibD

如果您希望将 SSH 连接日志写入本地文本文件,则需要在 sshd_config 文件中启用以下参数:

SyslogFacility LOCAL0
LogLevel INFO

重新启动 sshd 服务并确保 SSH 服务器日志现已写入纯文本文件 C:\ProgramData\ssh\logs\sshd.log

[玩转系统] 如何使用 OpenSSH 在 Windows 上启用和配置 SSH 服务器

您可以使用 PSRemoting 的安全 SSH 连接通过 WinRM 管理远程计算机。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯