如何从远程计算机SSH进入WINDOWS10或11?

劳资蜀道三 2023-08-05 22:41:13

最新的 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 环境变量中:

$Env:Path

如何在 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 theitbrosjbrown@192.168.1.15 — 拒绝从 192.168.1.15 主机连接到用户名 jbrown;

DenyUsers theitbros* — 阻止 theitbros 域中的所有用户通过 SSH 连接主机;

允许组 theitbrosssh_allow — 仅允许来自 theitbrosssh_allow 的用户连接主机。

sshd 的允许和拒绝规则按以下顺序处理:DenyUsers、AllowUsers、DenyGroups 和AllowGroups。

例如,要允许主机 192.168.31.100 在 mylocaluser1 帐户下进行 SSH 连接,请添加以下指令

AllowUsers mylocaluser1@192.168.31.100

更改 sshd_config 文件后,需要重新启动 sshd 服务:

Get-Service sshd| Restart-Service –force

通过 SSH 连接到 Windows

现在您可以使用任何 SSH 客户端连接到 Windows 计算机。要从 Linux 进行连接,请使用以下命令:

ssh -p 22 admin@192.168.1.90

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 C:ProgramDatasshssh_host_ed25519_key.pub

OpenSSH 服务器指纹存储在文件 C:ProgramDatasshssh_host_ecdsa_key.pub 中。您可以使用以下命令查看 Windows 主机上当前的 ECDSA 密钥指纹:

将出现 Putty 窗口。此处您需要指定要用于连接的 Windows 用户名和密码;

登录后,远程 Windows 主机的命令提示符将打开;

您现在可以在远程主机上以交互方式运行命令。

您还可以使用内置的 Windows SSH 客户端连接到另一台 Windows 主机。使用以下命令在 Windows 上安装 ssh.exe 客户端:

Add-WindowsCapability -Online -Name OpenSSH.Client*

现在,您可以直接从 Windows 命令提示符连接到远程 SSH 主机。使用以下命令:

ssh root@192.168.13.202

第一次连接时,您还需要将 SSH 服务器的 ECDSA 密钥的指纹添加到已知主机列表中。为此,请输入“是”>“输入”。

输入用户的密码。命令行 C:Windowssystem32conhost.exe 应出现:

现在,您可以使用 OpenSSH.Client 工具(scp.exe、sftp.exe)通过 SSH 协议在主机之间复制文件。以下命令将本地 test1.log 文件复制到远程 Windows SSH 主机:

scp.exe D:PStest1.log root@192.168.13.202:c:temp

如果您更喜欢使用 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。使用命令:

ssh -l admin@192.168.1.90

在 Windows 上以前版本的 OpenSSH 中,默认情况下所有 sshd 服务日志都写入文本文件 C:ProgramDatasshlogssshd.log。

在 Windows 11 上,可以使用事件查看器控制台 (eventvwr.msc) 查看 SSH 日志。所有 SSH 事件都可以在单独的部分应用程序和服务日志 > OpenSSH > 操作中找到。

例如,屏幕截图显示了通过 SSH 成功连接到计算机的事件示例。您可以看到 ssh 客户端的 IP 地址(主机名)和用于连接的用户名。

sshd:接受来自 192.168.14.14 的 jbrown 密码。端口 49833 ssh2

0 阅读:0

劳资蜀道三

简介:一个爱写笔记的小仙女