以Windows11为例,按照以下步骤启用 OpenSSH 服务器:

1. 检查并安装 OpenSSH 服务器

1.1. 按下 Windows + I,打开 设置
1.2. 搜索 可选功能 > 添加可选功能
1.3. 找到 OpenSSH 服务器,勾选并点击下一步安装。
添加openssh服务器.png

2. 启用并启动 OpenSSH 服务器

  1. 打开 PowerShell命令提示符(以管理员身份运行)。

  2. 输入以下命令来启动 OpenSSH 服务器:

    Start-Service sshd
    
  3. 设置Openssh服务器每次开机时自动启动:

    Set-Service -Name sshd -StartupType 'Automatic'
    

3. 测试 SSH 连接

使用 SSH 客户端(如 PowerShellPutty)进行连接测试。确保知道 Windows 机器的 IP 地址:
(账号密码为Windows上的用户名和密码)

ssh your-username@your-ip-address

默认端口是 22,你也可以通过修改配置文件来更改端口。

4. 使用密钥连接SSH服务器

4.1 创建密钥对

在 Windows 或其他系统上,你可以使用 ssh-keygen 命令生成 SSH 密钥对。以下是具体步骤:

  • 使用 PowerShell命令提示符。输入以下命令来生成密钥对:
ssh-keygen

执行命令后,会依次出现以下提示:

  • 指定保存路径:默认路径为 ~/.ssh/id_rsa,你可以按 Enter 使用默认路径,或者输入自定义路径。
Generating public/private rsa key pair.
Enter file in which to save the key  (C:\Users\user-name/.ssh/id_rsa)
  • 设置密码(可选):为私钥设置密码来增强安全性。如果不需要密码保护,直接按 Enter。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
  • 生成成功:如果一切顺利,系统会输出生成密钥的路径:
Your identification has been saved in C:\Users\user-name/.ssh/id_rsa.
Your public key has been saved in C:\Users\user-name/.ssh/id_rsa.pub.
  • 结果,生成的密钥对包括:
私钥:id_rsa(请妥善保管,不要与他人分享)
公钥:id_rsa.pub(可以上传到服务器)

4.2 复制公钥(id_rsa.pub)内容到C:\Users\user-name\.ssh\authorized_keys 文件中

如果没有authorized_keys文件则新建一个

5. 修改 OpenSSH 配置文件

  1. 配置文件路径在:C:\ProgramData\ssh\sshd_config
  2. 打开并编辑 sshd_config 文件,根据需要进行调整。
# 修改这三条内容,确保没有被注释。使OpenSSH服务器强制使用密钥登录,禁止使用密码登录,
PubkeyAuthentication yes # 使用公钥
AuthorizedKeysFile	.ssh/authorized_keys # 公钥位置
PasswordAuthentication no # 免密登录

注释掉以下2条
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

# Match Group administrators:
# 这是一个条件匹配的配置,表示接下来的一些 SSH 服务器配置将仅应用于系统中属于 administrators 组的用户。也就是说,Match Group administrators 后面的配置只对系统管理员用户生效。
# 注释掉这条指令(即在前面加上 #)将禁用对管理员用户的特定配置匹配,意味着管理员用户将不再有单独的 SSH 规则,所有用户将使用全局的配置规则。
# AuthorizedKeysFile PROGRAMDATA/ssh/administrators_authorized_keys:

# 这条配置指定了管理员用户的公钥存储位置。当管理员通过 SSH 连接时,SSH 服务器会从该文件中查找公钥来验证用户身份。默认情况下,管理员的公钥会保存在 __PROGRAMDATA__/ssh/administrators_authorized_keys 这个文件中。
# 注释掉这条指令 将导致 SSH 服务器不再从这个特定的文件中查找管理员用户的公钥,而是回退到全局的 ~/.ssh/authorized_keys 文件中查找公钥。这意味着管理员用户和普通用户会共享相同的公钥文件查找路径。
  1. 保存更改后,重新启动 SSH 服务器:

    Restart-Service sshd
    

完成这些步骤后,你的 Windows 机器即可作为 SSH 服务器使用,并且使用密钥免密登录,增加系统安全性。