Windows开启OpenSSH服务

说明

适用于 Windows Server 2019、Windows 10、Windows Server 2022

  • OpenSSH 是一款用于远程登录的连接工具,它使用 SSH 协议。 它会加密客户端与服务器之间的所有流量,从而遏止窃听、连接劫持和其他攻击。
  • OpenSSH 可用于将安装了 OpenSSH 客户端的 Window 10(版本 1809 及更高版本)或 Windows Server 2019 设备连接到那些安装了 OpenSSH 服务器的设备。

参考文档

安装OpenSSH

使用 Windows 设置安装

可以使用 Windows Server 2019 和 Windows 10 上的 Windows 设置安装这两个 OpenSSH 组件。

若要安装 OpenSSH 组件:

  1. 打开“设置”,选择“应用”>“应用和功能”,然后选择“可选功能” 。
  2. 扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:
    • 查找“OpenSSH 客户端”,再单击“安装”
    • 查找“OpenSSH 服务器”,再单击“安装”

设置完成后,回到“应用”>“应用和功能”和“可选功能”,你应会看到已列出 OpenSSH 。

使用PowerShell安装

请先以管理员身份运行 PowerShell

1
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

如果之前没安装过OpenSSH-client和OpenSSH-server会返回以下信息

1
2
3
4
5
Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent

Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

根据需要安装client和server

1
2
3
4
5
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

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

运行结束后,应该返回以下信息

1
2
3
Path          :
Online : True
RestartNeeded : False

启动OpenSSH服务

请先以管理员身份运行 PowerShell

1
2
3
4
5
6
7
8
9
10
11
12
13
# Start the sshd service
Start-Service sshd

# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

验证OpenSSH服务

登录

1
ssh username@servername

连接之后,默认是Windows的命令行提示符

1
domain\username@SERVERNAME C:\Users\username>

配置OpenSSH服务

修改默认shell

初始默认 Windows 是 Windows Command shell (cmd.exe)。

Windows 还包括了 PowerShell 和 Bash,第三方命令 shell 也可用于 Windows,并可配置为服务器的默认 shell。

  • 将默认 shell 设置为 powershell.exe
1
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force