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

Windows 免密远程连接 Linux 服务器:SSH 密钥认证完整教程

适用场景:使用 Windows 本地电脑通过 SSH 免密码登录远程 Linux 服务器(如 Ubuntu、CentOS 等),适用于 VS Code Remote-SSH、Trae IDE、PowerShell、Git Bash 等工具。


🌟 为什么推荐免密登录?

在日常开发或运维中,频繁输入 SSH 密码不仅繁琐,还存在以下问题:

  • 容易输错,尤其在复杂密码策略下;
  • 某些 IDE(如 Trae、VS Code)对密码输入支持不完善,常提示“认证失败”;
  • 密码认证安全性较低,易受暴力破解;
  • 自动化脚本无法交互式输入密码。

而 SSH 密钥认证 可以实现:
✅ 一次配置,永久免密
✅ 更高安全性(基于非对称加密)
✅ 与各类开发工具无缝集成


🔧 前提条件

  • 你的本地电脑是 Windows 10/11(已内置 OpenSSH 客户端);
  • 远程服务器运行 Linux 系统(如 Ubuntu、CentOS)并开启 SSH 服务;
  • 你拥有服务器的 用户名和 IP 地址,且当前可通过密码登录一次。
  • 💡 如果尚未安装 OpenSSH 客户端,请在「设置 → 应用 → 可选功能」中添加 “OpenSSH 客户端”。


    第一步:在 Windows 生成 SSH 密钥对

    打开 PowerShell(以普通用户身份即可),执行:

    ssh-keygen -t rsa -b 4096

    系统会提示你:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_rsa):

    直接按回车,使用默认路径保存。

    接着可选择是否设置 passphrase(密钥密码):

    • 若用于个人开发,可直接回车跳过(完全免密);
    • 若用于生产环境,建议设置强密码以增强安全。

    完成后,你会看到类似输出:

    Your identification has been saved in C:\\Users\\你的用户名\\.ssh\\id_rsa
    Your public key has been saved in C:\\Users\\你的用户名\\.ssh\\id_rsa.pub

    ✅ 私钥文件:id_rsa(切勿泄露!)
    ✅ 公钥文件:id_rsa.pub(可安全上传到服务器)


    第二步:将公钥部署到远程服务器

    方法一:使用 PowerShell 一键上传(推荐)

    在 PowerShell 中执行以下命令(替换 your_user 和 your_server_ip):

    type $env:USERPROFILE\\.ssh\\id_rsa.pub | ssh your_user@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

    例如:

    type $env:USERPROFILE\\.ssh\\id_rsa.pub | ssh ubuntu@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

    ⚠️ 此步骤会最后一次要求你输入服务器密码,用于完成公钥写入。

    方法二:手动复制(适合网络受限环境)

  • 查看公钥内容:
  • type $env:USERPROFILE\\.ssh\\id_rsa.pub

  • 复制整行输出(以 ssh-rsa AAAAB3… 开头);
  • 登录服务器,编辑 ~/.ssh/authorized_keys 文件:
  • mkdir -p ~/.ssh
    echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

    🔒 权限必须正确!否则 SSH 会拒绝加载密钥。


    第三步:测试免密登录

    在 PowerShell 中尝试连接:

    ssh your_user@your_server_ip

    如果配置成功,不会提示输入密码,而是直接进入服务器命令行!


    第四步(可选):关闭服务器密码登录(提升安全)

    ⚠️ 仅在确认密钥登录成功后操作!

    登录服务器,编辑 SSH 配置文件:

    sudo nano /etc/ssh/sshd_config

    找到并修改以下选项:

    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    PasswordAuthentication no # ← 关键:禁用密码登录

    保存后重启 SSH 服务:

    # Ubuntu/Debian
    sudo systemctl restart ssh

    # CentOS/RHEL
    sudo systemctl restart sshd

    🔐 此后,只有持有私钥的设备才能登录,极大提升安全性。


    🛠 常见问题排查

    ❌ 仍提示输入密码?

    • 检查服务器 ~/.ssh/authorized_keys 是否包含你的公钥;
    • 确认 ~/.ssh 目录权限为 700,authorized_keys 为 600;
    • 查看服务器日志:sudo tail -f /var/log/auth.log(Ubuntu)或 /var/log/secure(CentOS)。

    ❌ Permission denied (publickey)

    • 确保本地私钥路径正确(默认 %USERPROFILE%\\.ssh\\id_rsa);
    • 某些工具(如 Git Bash)需使用 Linux 路径格式:~/.ssh/id_rsa。

    🔄 如何指定自定义私钥?

    ssh -i "C:\\path\\to\\private_key" user@server


    ✅ 总结

    步骤

    操作

    1️⃣ 生成密钥

    ssh-keygen -t rsa -b 4096

    2️⃣ 上传公钥

    type id_rsa.pub | ssh user@ip "cat >> ~/.ssh/authorized_keys"

    3️⃣ 测试连接

    ssh user@ip

    (应免密)

    4️⃣ (可选)禁用密码

    修改 /etc/ssh/sshd_config

    并重启 sshd

    现在,你已经成功配置了 Windows 到 Linux 的免密 SSH 登录!无论是使用 PowerShell、VS Code、Trae 还是其他支持 SSH 的工具,都能享受无缝、安全的远程开发体验。


    📌 小贴士:建议定期备份你的私钥文件(id_rsa),避免重装系统后无法登录服务器!

    如有疑问,欢迎在评论区留言交流!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Windows 免密远程连接 Linux 服务器:SSH 密钥认证完整教程
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!