适用场景:使用 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),避免重装系统后无法登录服务器!
如有疑问,欢迎在评论区留言交流!