最新的 Windows 版本包括基于 OpenSSH 的内置 SSH 服务器和客户端。这意味着现在您可以使用任何 SSH 客户端远程连接到 Windows 10/11 或 Windows Server 2022/2019 计算机,类似于 Linux 发行版。在本文中,我们将向您展示如何在 Windows 10 和 Windows 11 上配置 OpenSSH,并使用 Putty 或任何其他 SSH 客户端连接到它。 OpenSSH 是 Linux 用户长期使用的 Secure Shell (SSH) 的开源跨平台版本。该项目目前已移植到Windows,几乎可以在任何版本的Windows上用作SSH服务器。 如何在 Windows 10 或 11 上安装 SSH 服务器 从 Windows 10 build 1809 开始,OpenSSH Server 包含在所有 Windows 操作系统映像中。 您可以通过图形设置面板在 Windows 10 或 11 中启用 OpenSSH 服务器: 转到“设置”>“应用程序”>“应用程序和功能”>“可选功能”(或运行命令 ms-settings:appsfeatures); 单击“添加功能”,选择“OpenSSH 服务器”(基于 OpenSSH 的安全外壳 (SSH) 服务器,用于安全密钥管理和从远程计算机进行访问),然后单击“安装”。 等待 OpenSSH 服务器安装完成。 您还可以使用 PowerShell 安装 sshd 服务器: Add-WindowsCapability -Online -Name OpenSSH.Server* 或者使用 DISM: dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0 如果要确保已安装 OpenSSH 服务器,请运行以下 PS 命令: Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Server*' 名称:OpenSSH.Server~~~0.0.1.0 状态:已安装 Windows 上的 OpenSSH 服务器作为按需功能 (FoD) 提供。这意味着 Windows 不会在本地存储 OpenSSH 安装的二进制文件。在安装可选功能期间,Windows 会从 Microsoft 更新服务器下载功能文件。如果您的计算机位于离线环境(未连接到 Internet),您可以从离线 FoD ISO 映像安装 OpenSSH Server: 您可以从批量许可服务中心 (VLSC) 或 My Visual Studio 下载适用于您的 Windows 版本的 FoD ISO 映像。 将 FoD ISO 介质安装到 Windows 中的虚拟 DVD 驱动器; 使用以下命令安装 OpenSSH.Server: Add-WindowsCapability -online -name OpenSSH.Server~~~~0.0.1.0 -source -Source "E:" -LimitAccess 使用以下 PowerShell 命令卸载 SSH 服务器: Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 笔记。在早期版本的 Windows 上(Windows 10 1809 之前的版本),您可以从 GitHub 存储库手动安装适用于 Windows 的 Win32-OpenSSH 端口。 OpenSSH 二进制文件位于 C:WindowsSystem32OpenSSH 文件夹中。 此路径也添加到 Windows 中的 Path 环境变量中: $Envath 如何在 Windows 上启用和配置 SSH 服务器 使用 PowerShell Get-Service 命令检查 ssh-agent 和 sshd 服务的状态: Get-Service -Name *ssh* 默认情况下,这两个服务都会停止并且不会添加到自动启动中。运行以下命令启动OpenSSH服务并为其配置自动启动: Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' Start-Service ssh-agent Set-Service -Name ssh-agent -StartupType 'Automatic' 检查 sshd 服务是否正在运行并侦听端口 TCP/22: netstat -nao | find /i '":22"' 安装 OpenSSH Server 时,允许远程连接到 SSH 服务器的规则将添加到 Windows Defender 防火墙(描述为 OpenSSH SSH Server (sshd) 的入站规则)。使用 PowerShell 命令检查 OpenSSH 服务器的规则是否已启用: Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled 如果规则被禁用,您必须启用它: Get-NetFirewallRule -Name *OpenSSH-Server*|Enable-NetFirewallRule 您可以使用 %programdata%sshsshd_config 配置文件为 Windows 中的 OpenSSH 服务器配置许多设置。 例如,您可以通过在 sshd_config 文件中启用以下指令来禁用 SSH 密码身份验证并仅保留基于密钥的身份验证: PubkeyAuthentication yes PasswordAuthentication no 您还可以在此处指定 SSHD 将接受连接的新 TCP 端口(而不是默认的 TCP 22 端口)。例如: Port 2222 使用指令AllowGroups、AllowUsers、DenyGroups、DenyUsers,您可以指定允许或拒绝通过SSH 连接到Windows 的用户和组: DenyUsers theitbros* — 阻止 theitbros 域中的所有用户通过 SSH 连接主机; 允许组 theitbrosssh_allow — 仅允许来自 theitbrosssh_allow 的用户连接主机。 sshd 的允许和拒绝规则按以下顺序处理:DenyUsers、AllowUsers、DenyGroups 和AllowGroups。 例如,要允许主机 192.168.31.100 在 mylocaluser1 帐户下进行 SSH 连接,请添加以下指令 更改 sshd_config 文件后,需要重新启动 sshd 服务: Get-Service sshd| Restart-Service –force 通过 SSH 连接到 Windows 现在您可以使用任何 SSH 客户端连接到 Windows 计算机。要从 Linux 进行连接,请使用以下命令: admin 是您要连接的本地 Windows 用户。此帐户必须是内置管理员组的成员。 192.168.1.90 是远程 Windows 主机的 IP 地址或 FQDN。 之后,Windows 命令提示符窗口将在 SSH 会话中打开。 您可以使用流行的 Putty 客户端通过 SSH 连接到 Windows 计算机: 下载并运行putty.exe; 输入要通过 SSH 连接的远程 Windows 主机的主机名或 IP 地址; 选择连接类型:SSH并确保指定端口22; 点击打开; 第一次通过 SSH 连接到 Windows 主机时,将出现安全警报,要求您确认是否要将远程计算机的 ssh-ed25519 密钥指纹添加到本地缓存。如果您信任该主机,请单击“接受”按钮。这会将该服务器添加到已知 SSH 主机列表中; ssh-keygen -lf CrogramDatasshssh_host_ed25519_key.pub OpenSSH 服务器指纹存储在文件 CrogramDatasshssh_host_ecdsa_key.pub 中。您可以使用以下命令查看 Windows 主机上当前的 ECDSA 密钥指纹: 将出现 Putty 窗口。此处您需要指定要用于连接的 Windows 用户名和密码; 登录后,远程 Windows 主机的命令提示符将打开; 您现在可以在远程主机上以交互方式运行命令。 您还可以使用内置的 Windows SSH 客户端连接到另一台 Windows 主机。使用以下命令在 Windows 上安装 ssh.exe 客户端: Add-WindowsCapability -Online -Name OpenSSH.Client* 现在,您可以直接从 Windows 命令提示符连接到远程 SSH 主机。使用以下命令: 第一次连接时,您还需要将 SSH 服务器的 ECDSA 密钥的指纹添加到已知主机列表中。为此,请输入“是”>“输入”。 输入用户的密码。命令行 C:Windowssystem32conhost.exe 应出现: 现在,您可以使用 OpenSSH.Client 工具(scp.exe、sftp.exe)通过 SSH 协议在主机之间复制文件。以下命令将本地 test1.log 文件复制到远程 Windows SSH 主机: 如果您更喜欢使用 Windows 终端,您可以向其中添加所需的 SSH 主机配置文件以进行快速连接: 运行 Windows 终端并转到其“设置”; 单击“配置文件”部分中的“添加新配置文件”按钮; 指定您要创建 Windows PowerShell 配置文件的副本; 指定配置文件名称(本例中为“SSH Windows 10 DEVPC”); 在命令行参数中,指定 SSH 主机的连接字符串。例如:%SystemRoot%System32WindowsPowerShellv1.0powershell.exe ssh root@192.168.13.202 保存配置文件; 现在,在 Windows 终端菜单中,您将有一个单独的选项,用于快速 SSH 连接到 Windows 主机。 提示:您可以将 Windows 上的默认 SSH shell 从 cmd.exe 更改为 PowerShell CLI。为此,请在运行 OpenSSH 服务器的主机上运行以下命令: New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force 从这里,当通过 SSH 连接到 Windows 时,您将立即看到 PowerShell 提示符而不是 cmd.exe。 如果您想使用基于密钥的 ssh 身份验证而不是密码身份验证,则需要在客户端上使用 ssh-keygen 生成密钥。在这种情况下,必须将 id_rsa.pub 文件的内容复制到 Windows 10 中的 c:usersadmin.sshauthorized_keys 文件。 之后,您无需密码即可从 Linux 客户端连接到 Windows 10。使用命令: 在 Windows 上以前版本的 OpenSSH 中,默认情况下所有 sshd 服务日志都写入文本文件 CrogramDatasshlogssshd.log。 在 Windows 11 上,可以使用事件查看器控制台 (eventvwr.msc) 查看 SSH 日志。所有 SSH 事件都可以在单独的部分应用程序和服务日志 > OpenSSH > 操作中找到。 例如,屏幕截图显示了通过 SSH 成功连接到计算机的事件示例。您可以看到 ssh 客户端的 IP 地址(主机名)和用于连接的用户名。 sshd:接受来自 192.168.14.14 的 jbrown 密码。端口 49833 ssh2
来自圈子: 中国红客联盟第1战队 |