云计算百科
云计算领域专业知识百科平台

告别重复输密码!Windows 下 SSH 免密登录服务器完整指南

每次用 SSH 连接服务器都要手动输密码?不仅繁琐还容易输错,尤其在 IDE 中频繁连接时更是影响效率。本文将带你一步步在 Windows 环境下配置永久免密登录,从密钥生成到 IDE 集成,全程可复现,看完就能上手。


一、核心原理:非对称加密实现免密认证

SSH 免密登录的核心是非对称密钥对:

  • 私钥:保存在本地,绝对保密,用于身份签名;
  • 公钥:上传到服务器,用于验证本地身份。

当你发起连接时,本地用私钥生成签名,服务器用存储的公钥验证签名有效性 —— 验证通过则直接登录,无需密码。


二、前置准备:启用 Windows OpenSSH 客户端

Windows 10/11 自带 OpenSSH 客户端,若未启用,先在 PowerShell(管理员权限)执行:

# 检查 OpenSSH 客户端状态
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

# 若未安装,执行安装
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0


三、步骤 1:本地生成 SSH 密钥对

打开 PowerShell(非管理员即可),执行密钥生成命令,推荐更安全的 ed25519 算法:

ssh-keygen -t ed25519 -b 4096 -C "你的备注(如邮箱)"

交互说明:

  • 保存路径:直接回车,默认保存至 C:\\Users\\你的用户名\\.ssh\\id_ed25519;
  • 密钥密码(passphrase):直接回车(实现完全免密),若需更高安全可设置密码(后续需用 ssh-agent 缓存)。
  • 生成成功后,C:\\Users\\你的用户名\\.ssh 目录下会出现两个文件:

    • id_ed25519:私钥(严禁泄露);
    • id_ed25519.pub:公钥(需上传到服务器)。

    四、步骤 2:将公钥上传到服务器

    Windows 自带 OpenSSH 不包含 ssh-copy-id 命令,因此采用手动复制公钥的方式:

    2.1 复制公钥内容到剪贴板

    PowerShell 执行:

    Get-Content $env:USERPROFILE\\.ssh\\id_ed25519.pub | clip

    公钥内容已自动复制到剪贴板。

    2.2 登录服务器并配置公钥

    用密码登录目标服务器(替换为你的服务器信息):

    ssh 服务器用户名@服务器IP

    登录后,在服务器终端依次执行:

    # 创建 .ssh 目录(若不存在)
    mkdir -p ~/.ssh
    # 修正目录权限(SSH 要求严格,否则免密失败)
    chmod 700 ~/.ssh
    # 将剪贴板中的公钥追加到授权文件
    echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
    # 修正授权文件权限
    chmod 600 ~/.ssh/authorized_keys
    # 重启 SSH 服务使配置生效(Ubuntu/CentOS 通用)
    sudo systemctl restart sshd

    ⚠️ 注意:粘贴公钥时需确保是完整一行,无换行或多余空格。


    五、步骤 3:验证免密登录

    在本地 PowerShell 执行连接命令:

    ssh 服务器用户名@服务器IP

    若无需输入密码直接登录,说明配置成功🎉。


    六、步骤 4:IDE 集成(以 TRAE IDE 为例)

    方式 1:直接快速连接

  • 打开 TRAE IDE,左侧「远程资源管理器」→ 点击 + 新建连接;
  • 输入连接地址:ssh 服务器用户名@服务器IP;
  • 确认主机指纹后,IDE 会自动读取本地默认路径的私钥,实现免密登录。
  • 方式 2:配置 SSH Config(推荐,一劳永逸)

    编辑 Windows 本地 C:\\Users\\你的用户名\\.ssh\\config 文件(无则新建),添加:

    Host myserver # 自定义别名,连接时直接使用
    HostName 服务器IP
    User 服务器用户名
    Port 22 # 非默认端口需修改
    # IdentityFile 可省略,默认读取 ~/.ssh/id_ed25519

    之后在 IDE 中直接输入 ssh myserver,即可一键免密连接。


    七、常见问题排查

    问题现象排查方向
    仍提示输入密码 1. 服务器 authorized_keys 中是否包含本地公钥;2. 服务器 ~/.ssh 权限是否为 700,authorized_keys 是否为 600;3. 本地私钥路径是否正确。
    连接被拒绝 1. 服务器 SSH 端口是否开放;2. 服务器 sshd_config 中 PubkeyAuthentication 是否为 yes。
    Windows 私钥权限报错 执行以下命令修正私钥权限:icacls $env:USERPROFILE\\.ssh\\id_ed25519 /inheritance:ricacls $env:USERPROFILE\\.ssh\\id_ed25519 /grant:r "$env:USERNAME:(R,W)"

    八、进阶:一套密钥管理多台服务器

    同一个密钥对可同时配置多台服务器:只需将本地公钥内容,重复「步骤 2」粘贴到其他服务器的 authorized_keys 文件中,即可实现一套密钥免密登录所有服务器,大幅提升运维效率。


    九、安全建议

  • 私钥文件权限必须限制为仅当前用户可读写,避免被其他用户窃取;
  • 若设置了 passphrase,可通过 ssh-agent 缓存密码,避免重复输入:

    powershell

    Set-Service ssh-agent -StartupType Automatic
    Start-Service ssh-agent
    ssh-add $env:USERPROFILE\\.ssh\\id_ed25519

  • 免密配置稳定后,可在服务器 sshd_config 中设置 PasswordAuthentication no,禁用密码登录,进一步提升安全性。

  • 总结

    通过「生成密钥对 → 上传公钥 → IDE 集成」三步,即可彻底告别 SSH 密码输入,实现高效、安全的服务器免密登录。这套方案不仅适用于命令行,也能无缝对接各类 IDE,是后端开发与运维的必备效率工具。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 告别重复输密码!Windows 下 SSH 免密登录服务器完整指南
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!