PuTTY SSH密钥登录配置教程(PuTTYgen生成密钥 + Pageant免密登录) 前言用PuTTY连Linux服务器每次输密码是不是很烦更烦的是密码输错了还要重新来过。SSH密钥登录可以彻底解决这个问题——一次配置终身免密。而且比密码登录更安全2048位以上的密钥暴力破解难度远高于普通密码。网上大部分教程只讲了用PuTTYgen生成密钥这一步但实际生产环境中Pageant密钥代理才是提升效率的关键。本文把整条链路讲清楚。环境说明本地Windows 10/11已安装PuTTY远程Linux服务器CentOS/Ubuntu均可已开启SSH服务默认端口22PuTTY下载https://putty.ijinshan.com/第一步PuTTYgen生成密钥对打开PuTTYgen开始菜单PuTTY文件夹里或直接运行puttygen.exe密钥类型选Ed25519推荐或RSA兼容性最好选2048位以上点击Generate按钮在进度条区域随机晃动鼠标——PuTTYgen会采集鼠标轨迹的随机数据来增强密钥的随机性生成完成后窗口上方显示的就是你的公钥文本接下来设置密钥密码可选但强烈建议设置在Key passphrase输入框填一个密码在Confirm passphrase再输一遍确认点击Save private key把.ppk私钥文件存到安全位置比如D:\keys\my_server.ppk⚠️ 安全提醒 .ppk 私钥文件等同于登录密码不要上传到任何公开位置GitHub/Gitee/网盘。 建议备份到加密U盘或密码管理器中。第二步把公钥部署到服务器先用密码登录服务器然后执行以下命令# 1. 创建 .ssh 目录如果不存在mkdir-p~/.sshchmod700~/.ssh# 2. 编辑 authorized_keys 文件nano~/.ssh/authorized_keys把PuTTYgen窗口里“Public key for pasting into OpenSSH authorized_keys file”下面那整段文本以ssh-ed25519或ssh-rsa开头粘贴进去。注意公钥是一整行不要换行。多个公钥每行一个。# 3. 设置正确权限chmod600~/.ssh/authorized_keys权限设错会导致密钥登录失败600 是必须的。验证公钥是否写进去了cat~/.ssh/authorized_keys看到你刚才粘贴的公钥文本就算OK。退出SSH连接准备测试免密登录。第三步配置PuTTY使用密钥打开PuTTY主程序在Session页面填好服务器IP和端口默认22左侧导航Connection → SSH → Auth → Credentials点击Private key file for authentication旁边的Browse选刚才保存的.ppk文件回到Session页面在Saved Sessions里输入一个会话名如生产服务器点Save保存配置点Open连接如果一切正常会提示输入密钥密码就是你生成密钥时设的那个输入后直接登录不再需要服务器用户密码。第四步Pageant密钥代理关键效率提升上面配置完之后每次打开PuTTY还是要输一遍密钥密码。如果你管理多台服务器每台输一遍能烦死。Pageant就是解决这个问题的——一次输入全窗口复用。运行pageant.exe开始菜单PuTTY文件夹里系统托盘出现一个戴帽子电脑的图标 右键托盘图标 →Add Key→ 选择.ppk文件输入一次密钥密码之后所有PuTTY窗口连接时自动使用这个密钥不用再输任何密码多密钥管理如果你有多台服务器用了不同的密钥对依次 Add Key 把几个.ppk全加载进去。Pageant会逐个尝试自动匹配服务器接受的公钥。离开电脑时建议右键托盘图标 →View Keys→ 全选 Remove防止别人用你电脑连接服务器。常见问题排查问题1提示 “Server refused our key”排查顺序 ① authorized_keys 文件权限是不是 600chmod 600 ~/.ssh/authorized_keys ② .ssh 目录权限是不是 700chmod 700 ~/.ssh ③ authorized_keys 里公钥是不是完整的一行有没有被换行截断 ④ 服务器 SELinux 是否拦截CentOS/RHEL 执行 restorecon -R ~/.ssh ⑤ /etc/ssh/sshd_config 里 PubkeyAuthentication 是否为 yes改完 sshd_config 记得重启SSH服务sudosystemctl restart sshd# CentOS/RHELsudosystemctl restartssh# Ubuntu/Debian问题2密钥登录成功但还是要求输密码如果密钥正确但服务器跳过密钥直接要密码检查 sshd_configsudogrep-EPubkeyAuthentication|PasswordAuthentication/etc/ssh/sshd_config确保PubkeyAuthentication yes。如果想彻底禁用密码登录更安全sudosed-is/^#PasswordAuthentication yes/PasswordAuthentication no//etc/ssh/sshd_configsudosystemctl restart sshd问题3Pageant加载密钥后PuTTY还是提示输入密钥密码检查PuTTY的 Connection → SSH → Auth → Credentials 里是否勾选了“Attempt authentication using Pageant”默认是勾的。如果没勾勾上后保存会话再试。密钥类型怎么选类型速度安全性兼容性推荐场景Ed25519最快最高OpenSSH 6.52014年后现代Linux日常首选RSA 3072/4096中等高几乎所有系统老旧系统合规要求ECDSA快高中等嵌入式/低功耗设备建议能选Ed25519就选Ed25519。密钥串短方便复制、签名速度快、安全性等同于RSA 3000位以上。密钥格式互转不同工具之间迁移时经常碰到格式不兼容的问题# PuTTY .ppk → OpenSSHLinux用打开 PuTTYgen → Load 加载.ppk → Conversions → Export OpenSSH key# OpenSSH私钥 → PuTTY .ppk打开 PuTTYgen → Conversions → Import key → Save private key安全建议务必给私钥设密码——这是最后一道防线不同环境用不同密钥——不要所有服务器共享一对密钥每6-12个月轮换一次密钥私钥绝不通过网络传输微信/邮件/网盘都不行离职或设备遗失后立即从服务器 authorized_keys 中删除对应公钥配置完成之后你的工作流就变成了开机 → 启动Pageant加载密钥 → 双击PuTTY会话直接登录。比输密码快也更安全。PuTTY Windows版https://putty.ijinshan.com/安装包3.2MBMIT开源协议免费无限制。