OpenSSH免密登录

实验环境:
  云服务器:Server 2019,安装OpenSSH

  客户机:Windows11

第一步:在 Windows 11(客户机)生成密钥对
  1.在 Win11 上打开 PowerShell。

  2.输入以下命令生成密钥(一路回车即可):

    PowerShell
    ssh-keygen -t ed25519

  3. 生成后,你的公钥会保存在 C:\Users\你的Win11用户名\.ssh\id_ed25519.pub。
  4. 用文本编辑器打开这个 .pub 文件,**复制里面的全部内容**。

第二步:在 Server 2019(服务器)配置公钥

  根据你登录 Server 2019 的账号类型,公钥存放的位置**完全不同**,请务必对号入座:

  #### 情况 A:如果你使用的是普通用户登录 Server 2019
  1. 登录服务器,进入该用户的家目录(例如 C:\Users\myuser)。
  2. 创建一个名为 .ssh 的文件夹,并在里面新建一个名为 authorized_keys 的文件(注意没有后缀名)。
  3. 把刚才复制的 Win11 公钥内容粘贴进去并保存。
  4. 最终路径为:C:\Users\myuser\.ssh\authorized_keys。

  #### 情况 B:如果你使用的是 Administrator 权限账号(最常见)
  Windows 版 OpenSSH 默认对管理员有特殊规定,其公钥**不放在**用户目录下,而是存放在系统全局目录中:
  1. 登录服务器,打开路径:C:\ProgramData\ssh\(注:ProgramData 是隐藏文件夹)。
  2. 在该目录下找到 administrators_authorized_keys 文件(如果没有就手动创建一个,注意没有后缀名)。
  3. 把 Win11 的公钥内容粘贴进去并保存。

第三步:在 Server 2019 上修复权限(关键步骤)

  Windows 对文件权限极其敏感,如果权限太开放,SSH 会直接忽略免密登录。

  #### 如果是普通用户(情况 A):
  确保 C:\Users\myuser\.ssh\authorized_keys 这个文件,**只有该用户本身和 SYSTEM 有权限访问**,右键文件 -> 属性 -> 安全 -> 高级,禁用继承并删除其他无关用户。

  #### 如果是管理员(情况 B):
  你必须确保 C:\ProgramData\ssh\administrators_authorized_keys 的权限非常严格。
  请在服务器上以**管理员身份打开 PowerShell**,执行以下命令来自动修复该文件的权限:

  $path = "$env:ProgramData\ssh\administrators_authorized_keys"
  # 继承权限禁用
  icacls $path /inheritance:r
  # 赋予 Administrators 组和 SYSTEM 完全控制权限
  icacls $path /grant "Administrators:(F)"
  icacls $path /grant "SYSTEM:(F)"
第四步:检查并重启服务器的 SSH 服务
  在 Server 2019 上,打开 C:\ProgramData\ssh\sshd_config 文件。

  确保以下两行没有被 # 注释(如果是情况 B,这两行必须存在):

  PubkeyAuthentication yes
  AuthorizedKeysFile __programdata__/ssh/administrators_authorized_keys

  3. 在服务器的管理员 PowerShell 中重启 SSH 服务使其生效:
   Restart-Service sshd
第五步:在 Windows 11 上一键连接
  现在回到你的 Windows 11 PowerShell 中,直接输入命令即可秒连,不再需要密码:

  ssh Administrator@服务器IP

  小贴士: 如果想进一步偷懒,可以在 Win11 的 C:\Users\你的Win11用户名.ssh\ 目录下创建一个名为 config 的文本文件(无后缀),写入:

  Host win-server
  HostName 服务器IP
  User Administrator


  之后在 Win11 终端里只需要输入 ssh win-server 就能直接登录了。

posted @ 2026-05-22 14:03  祁连山  阅读(58)  评论(0)    收藏  举报