文章

Windows系统如何安装ssh服务端

前言

Windows系统一般不默认安装ssh,尤其是ssh服务端,也就是别的机器想通过ssh方式连接Windows机器时,Windows机器需要启动的服务,这里因为笔者日常经常会使用到Windows系统ssh服务端,并且由于Windows安装ssh服务端经常会出现失败,这里笔者总结了3种方法,确保可以安装成功。

前置检查:

  1. Windows系统最低要求: Windows Server 2019 或 Windows 10

  2. PowerShell 5.1以上:打开PowerShell,输入$PSVersionTable.PSVersion,最低要求是5

  3. 用户为管理员用户组:打开PowerShell,输入以下命令

1
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

展开

输出显示 True则为管理员组

务必确认以上检查通过,没有通过建议询问ChatGPT寻求解决方案

方法一:Windows设置中安装

  1. 打开“设置”,选择“系统”,然后选择“可选功能”,没找到就直接在设置中搜索“可选功能”

  2. 扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,找到“OpenSSH 客户端”,然后选择“安装”,找到“OpenSSH Server”,然后选择“安装”

  3. 确保安装成功,有概率安装会安装失败,可能因为环境或者网络问题,如果安装失败,建议直接用方法三;

  4. 打开“服务”桌面应用。 (选择“开始”,在搜索框中键入 services.msc ,然后选择“服务”应用或按 ENTER。)

  5. 在详细信息窗格中,双击“OpenSSH SSH 服务器”。

  6. 在“常规”选项卡上的“启动类型”下拉菜单中,选择“自动”,然后选择“确定”。

  7. 若要启动服务,请选择“启动”。

以上是Windows10操作系统的过程,Windows11会有细微不同这里不再赘述

方法二:命令行方式(全程使用管理员PowerShell)

  1. 输入如下命令

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

    展开

    一般会返回

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

    展开

    也就是ssh客户端已经安装,服务端没有安装

  2. 输入如下命令分别安装ssh客户端和服务端

    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
    

    展开

    过程中如果出现错误,建议直接使用方法三

  3. 使用如下命令分别启动ssh服务端,配置服务开机自动启动,配置防火墙

    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."
     }
    

    展开

方法三:手动下载离线安装

微软PowerShell的GitHub仓库有开源ssh部分,这里直接下载安装即可。

  1. 仓库位置在https://github.com/PowerShell/Win32-OpenSSH,这里建议直接下载release版本即可,位置在https://github.com/PowerShell/Win32-OpenSSH/releases,根据版本选择,这里笔者选择OpenSSH-Win64.zip

  2. 由于是长期使用软件,这里笔者直接将解压后的文件放在C:\Program Files\OpenSSH-Win64

  3. 使用管理员打开PowerShell,并cd到C:\Program Files\OpenSSH-Win64目录下,输入如下命令

    1
    
     set-executionpolicy remotesigned
    

    展开

    并输入y确认 再输入如下命令完成安装

    1
    
     .\install-sshd.ps1
    

    展开

  4. 使用如下命令分别启动ssh服务端,配置服务开机自动启动,配置防火墙

    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."
     }
    

    展开

方法一和二实际上就是微软官方给出的安装指南,链接:https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell 但是实际上容易失败,可能是网络或者是本地环境问题,所以笔者给出第三种方案,也是之前微软没有将ssh服务端加入到Windows系统可选功能前的安装办法,这里笔者也是担心遗忘写帖子记录下。

本文由作者按照 CC BY 4.0 进行授权