如何在 Windows Server 2019 上安装和配置 OpenSSH

什么是 OpenSSH?

OpenSSH 是由 OpenBSD 项目开发的开源实用程序。 SSH 代表“安全外壳”。 该服务对两端的流量进行加密,消除黑客或窃听者的安全风险。 它可用于文件传输等远程操作,并提供基于密钥的无密码身份验证。 在本教程中,我们将演示如何利用 Windows 服务器上的 SSH 的强大功能来发送基本的远程命令并使用密码身份验证传输文件。

我们还应该提到 OpenSSH 不是什么。 OpenSSH 不是基于远程桌面或 VNC 的解决方案,因为它不提供图形界面。

尽管在 BSD 和 Linux 操作系统上自称为“用于远程登录的首要连接工具”已有 20 多年了,但 Microsoft Windows 系统管理员和开发人员经常经历漫长而复杂的设置过程。 他们被要求下载多个包含令人困惑的设置过程的应用程序。 虽然功能强大,但它并非没有怪癖。

2018 年,微软在 Windows 10 和 Windows Server 2019 中发布了原生 OpenSSH 客户端/服务器功能。这个版本对于必须同时使用基于 Windows 和 Linux 的系统的用户来说是一个重大改进。 使用本机 OpenSSH 解决方案,无需安装外部应用程序,可以通过 Windows Powershell 完成。

预检

  • 本文假设您以管理员身份运行 Windows Server 2019 或 Windows 10。
  • 此外,安装 OpenSSH Server 将创建一个名为“OpenSSH-Server-In-TCP”的 Windows 防火墙规则。 这将允许端口 22 上的入站 SSH 流量到您的服务器。
  • OpenSSH 由其架构的两个不同元素组成; 本教程涵盖了客户端和服务器端系统。

安装

第1步。

我们首先以管理员用户身份打开 Powershell。 首先,单击“开始”按钮,然后单击“所有应用程序”。 展开 Powershell 文件夹,然后右键单击“Powershell”并选择“以管理员身份运行”。根据您的机器设置,您可能会收到“UAC”或用户访问控制提示,要求我们允许它。 继续并批准访问。

第2步。

接下来,我们需要输入命令来安装 OpenSSH 客户端。 客户端是用来连接 OpenSSH 服务器的软件。 我们将从本地笔记本电脑或工作站进行连接,因此我们首先打开 Powershell,如本教程前面所述。 在 Powershell 提示符下键入以下内容并回车。

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

您将看到一个指示安装进度的进度条。 安装完成后,您将收到以下输出。

Path :
Online : True
RestartNeeded : False

步骤 3。

接下来,我们将安装 OpenSSH 服务器。 服务器是运行 sshd 服务的计算机,我们将连接到它。 在 Powershell 提示符下键入以下命令并回车。

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

您应该再次看到指示安装进度的进度条。 安装完成后,您应该会收到以下输出。

Path :
Online : True
RestartNeeded : False

卸载

如果您想要删除客户端或服务器,您可以通过在具有管理员权限的 Powershell 提示符下运行以下命令之一来实现。

# Uninstall the OpenSSH Client
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Uninstall the OpenSSH Server
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

配置

在服务器上安装 OpenSSH 软件后,我们需要对其进行配置。 在这一步中,我们将 sshd 服务设置为开机启动。 此操作将确保如果发生重新启动或电源故障,服务将自动重新启动。 再次在 Powershell 提示符下,键入以下命令。 这将启动服务并将其设置为自动启动。

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

接下来,为了允许与服务器建立安全的 SSH 连接,我们需要添加一个防火墙规则,允许端口 22 上的入站 ssh 流量。要验证,请在 Powershell 提示符下键入此命令。

# Confirm the Firewall rule is present. It should be created automatically by setup.
Get-NetFirewallRule -Name *ssh*

现在,我们应该看到一个名为“OpenSSH-Server-In-TCP”的已启用防火墙规则。 如果我们没有看到防火墙规则,我们将需要创建一个。 我们通过运行以下命令来完成此操作。

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

OpenSSH 使用

一旦我们安装了 OpenSSH 服务器和客户端,我们就可以测试设置了。 我们可以使用已安装的 SSH 客户端快速检查来自任何 Linux、Mac 或 Windows 设备的连接。 在 Windows 中,在 PowerShell 中键入以下命令。

ssh [email protected]

***笔记: 把上面的IP换成你服务器的IP地址***

如果这是您第一次连接到服务器,系统会询问您是否要继续连接。 输入“yes”并回车。

The authenticity of host' 67.225.186.9 (67.225.186.9)' can't be established.
ECDSA key fingerprint is SHA256:aMmHNXmcgX2DHuFL0V9lSpY8AX45iHQeBxVD1oZgr4w.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '67.225.186.9' (ECDSA) to the list of known hosts.

接下来,系统会提示我们输入用户密码。 输入并按回车键。

[email protected]'s password:

一旦用户成功通过身份验证,我们将看到一个类似于以下内容的命令 shell 提示符。

Microsoft Windows [Version 10.0.17763.1282]
(c) 2018 Microsoft Corporation. All rights reserved.

administrator@HU11W8 C:UsersAdministrator>

远程 SSH 会话或“安全 shell”现在已经生效,我们可以开始发送远程命令了。 为了 example,如果您想查看用户目录中的文件,请键入“dir”命令并按 Enter。 您将看到该文件夹​​中所有文件和目录的列表。

administrator@HU11W8 C:UsersAdministrator>dir
Volume in drive C has no label.
Volume Serial Number is AEF3-9E8C

Directory of C:UsersAdministrator
07/02/2020 07:52 AM
07/02/2020 07:52 AM..
07/08/2020 12:45 PM3D Objects
07/08/2020 12:45 PMContacts
07/08/2020 12:45 PMDesktop
07/08/2020 12:45 PMDocuments
07/08/2020 12:45 PMDownloads
07/08/2020 12:45 PMFavorites
07/08/2020 12:45 PMLinks
07/08/2020 12:45 PMMusic
07/08/2020 12:45 PMPictures
07/08/2020 12:45 PMSaved Games
07/08/2020 12:45 PMSearches
07/08/2020 12:45 PMVideos
0 File(s) 0 bytes
14 Dir(s) 129,643,646,976 bytes free

有关 Powershell 及其各种命令的更多信息,请务必查看 微软 Powershell 文档 了解有关其全部功能的更多信息。

使用 OpenSSH 传输文件

既然我们已经了解了如何建立成功的连接以及发送远程命令的基础知识,我们就可以继续进行文件传输了。 在本节中,我们将使用 scp OpenSSH 提供的文件传输实用程序,用于将名为“FileOnMyClient.txt”的文件传输到我们 OpenSSH 服务器上的管理员文件夹。

在任何安装了 SSH 客户端的 Linux、Mac 或 Windows 设备上,使用“cd”命令导航到文件所在的文件夹。

cd Documents

***笔记:这假定文件位于客户端的 Documents 文件夹中。***

现在我们准备启动文件传输。 在 Powershell 中,键入以下命令将文件传输到服务器上的 Administrators 文件夹:

scp FileOnMyClient.txt [email protected]:/Users/Administrator/

我们将被提示输入您的密码。 输入并按回车键。 我们将看到类似于以下信息的输出,指示传输百分比、传输速度和传输时间范围。

[email protected]'s password:
FileOnMyClient.txt 100% 0 0.1KB/s 00:05

接下来,要验证文件传输是否成功,我们必须返回服务器并再次输入 dir 命令,该命令会列出该特定文件夹中的所有文件。 如您所见,我们已经成功传输了我们的文本文件。

administrator@HU11W8 C:UsersAdministrator>dir
Volume in drive C has no label.
Volume Serial Number is AEF3-9E8C

Directory of C:UsersAdministrator
07/08/2020 01:06 PM .
07/08/2020 01:06 PM..
07/08/2020 12:45 PM3D Objects
07/08/2020 12:45 PMContacts
07/08/2020 12:45 PMDesktop
07/08/2020 12:45 PMDocuments
07/08/2020 12:45 PMDownloads
07/08/2020 12:45 PMFavorites
07/08/2020 01:12 PM 15 FileOnMyClient.txt <<<<<
07/08/2020 12:45 PMLinks
07/08/2020 12:45 PMMusic
07/08/2020 12:45 PMPictures
07/08/2020 12:45 PMSaved Games
07/08/2020 12:45 PMSearches
07/08/2020 12:45 PMVideos
1 File(s) 15 bytes
14 Dir(s) 129,640,345,600 bytes free

我们还可以使用内置的 Windows 命令“type”命令检查文本文件的内容,然后是文件名。

administrator@HU11W8 C:UsersAdministrator>type FileOnMyClient.txt

结论

OpenSSH 是一个非常有用的工具,Linux 和 Windows 用户的管理员都可以使用它来轻松管理远程系统。 它具有多种功能,包括密钥生成功能、内部和外部 SSH 密钥的密钥存储、安全文件传输协议属性以及文件传输实用程序。 总体而言,OpenSSH 是安全可靠连接的现代标准。

我们以成为 Hosting™ 中最乐于助人的人而自豪!

我们的支持人员全年 365 天、每周 7 天、每天 24 小时随时可以帮助解决与本文相关的任何问题。

我们可以通过我们的票务系统 [email protected]、电话(800-580-4986)或通过 在线聊天 或您喜欢的任何方法。 我们为您努力工作,以便您可以放松。