当前位置: 首页 > news >正文

PuTTY SSH密钥登录配置教程(PuTTYgen生成密钥 + Pageant免密登录)

前言

用PuTTY连Linux服务器,每次输密码是不是很烦?更烦的是密码输错了还要重新来过。

SSH密钥登录可以彻底解决这个问题——一次配置,终身免密。而且比密码登录更安全(2048位以上的密钥暴力破解难度远高于普通密码)。

网上大部分教程只讲了用PuTTYgen生成密钥这一步,但实际生产环境中,Pageant密钥代理才是提升效率的关键。本文把整条链路讲清楚。

环境说明

  • 本地:Windows 10/11,已安装PuTTY
  • 远程:Linux服务器(CentOS/Ubuntu均可),已开启SSH服务(默认端口22)
  • PuTTY下载:https://putty.ijinshan.com/

第一步:PuTTYgen生成密钥对

打开PuTTYgen(开始菜单PuTTY文件夹里,或直接运行puttygen.exe):

  1. 密钥类型选Ed25519(推荐)或RSA(兼容性最好,选2048位以上)
  2. 点击Generate按钮
  3. 在进度条区域随机晃动鼠标——PuTTYgen会采集鼠标轨迹的随机数据来增强密钥的随机性
  4. 生成完成后,窗口上方显示的就是你的公钥文本

接下来设置密钥密码(可选但强烈建议设置):

  • 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-ed25519ssh-rsa开头)粘贴进去。

注意:公钥是一整行,不要换行。多个公钥每行一个。

# 3. 设置正确权限chmod600~/.ssh/authorized_keys

权限设错会导致密钥登录失败,600 是必须的。

验证公钥是否写进去了:

cat~/.ssh/authorized_keys

看到你刚才粘贴的公钥文本就算OK。退出SSH连接,准备测试免密登录。

第三步:配置PuTTY使用密钥

  1. 打开PuTTY主程序
  2. Session页面填好服务器IP和端口(默认22)
  3. 左侧导航:Connection → SSH → Auth → Credentials
  4. 点击Private key file for authentication旁边的Browse,选刚才保存的.ppk文件
  5. 回到Session页面,在Saved Sessions里输入一个会话名(如"生产服务器"),点Save保存配置
  6. Open连接

如果一切正常,会提示输入密钥密码(就是你生成密钥时设的那个),输入后直接登录,不再需要服务器用户密码。

第四步:Pageant密钥代理(关键效率提升)

上面配置完之后每次打开PuTTY还是要输一遍密钥密码。如果你管理多台服务器,每台输一遍能烦死。

Pageant就是解决这个问题的——一次输入,全窗口复用

  1. 运行pageant.exe(开始菜单PuTTY文件夹里)
  2. 系统托盘出现一个戴帽子电脑的图标 🎩💻
  3. 右键托盘图标 →Add Key→ 选择.ppk文件
  4. 输入一次密钥密码
  5. 之后所有PuTTY窗口连接时自动使用这个密钥,不用再输任何密码

多密钥管理:如果你有多台服务器用了不同的密钥对,依次 Add Key 把几个.ppk全加载进去。Pageant会逐个尝试,自动匹配服务器接受的公钥。

离开电脑时建议右键托盘图标 →View Keys→ 全选 Remove,防止别人用你电脑连接服务器。

常见问题排查

问题1:提示 “Server refused our key”

排查顺序: ① authorized_keys 文件权限是不是 600?(chmod 600 ~/.ssh/authorized_keys) ② .ssh 目录权限是不是 700?(chmod 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_config:

sudogrep-E"PubkeyAuthentication|PasswordAuthentication"/etc/ssh/sshd_config

确保PubkeyAuthentication yes。如果想彻底禁用密码登录(更安全):

sudosed-i's/^#PasswordAuthentication yes/PasswordAuthentication no/'/etc/ssh/sshd_configsudosystemctl restart sshd

问题3:Pageant加载密钥后PuTTY还是提示输入密钥密码

检查PuTTY的 Connection → SSH → Auth → Credentials 里是否勾选了“Attempt authentication using Pageant”(默认是勾的)。如果没勾,勾上后保存会话再试。

密钥类型怎么选

类型速度安全性兼容性推荐场景
Ed25519最快最高OpenSSH 6.5+(2014年后)现代Linux,日常首选
RSA 3072/4096中等几乎所有系统老旧系统,合规要求
ECDSA中等嵌入式/低功耗设备

建议:能选Ed25519就选Ed25519。密钥串短(方便复制)、签名速度快、安全性等同于RSA 3000位以上。

密钥格式互转

不同工具之间迁移时经常碰到格式不兼容的问题:

# PuTTY .ppk → OpenSSH(Linux用)打开 PuTTYgen → Load 加载.ppk → Conversions → Export OpenSSH key# OpenSSH私钥 → PuTTY .ppk打开 PuTTYgen → Conversions → Import key → Save private key

安全建议

  1. 务必给私钥设密码——这是最后一道防线
  2. 不同环境用不同密钥——不要所有服务器共享一对密钥
  3. 每6-12个月轮换一次密钥
  4. 私钥绝不通过网络传输(微信/邮件/网盘都不行)
  5. 离职或设备遗失后立即从服务器 authorized_keys 中删除对应公钥

配置完成之后,你的工作流就变成了:开机 → 启动Pageant加载密钥 → 双击PuTTY会话直接登录。比输密码快,也更安全。

PuTTY Windows版:https://putty.ijinshan.com/
安装包3.2MB,MIT开源协议,免费无限制。

http://www.jsqmd.com/news/1146970/

相关文章:

  • Sunshine游戏串流:3步搭建你的家庭游戏云
  • 压电陶瓷发声器与DSPIC控制器的智能警报系统设计
  • TS2007FC与PIC18F4680嵌入式音频处理方案详解
  • TAS5414C-Q1与STM32F401RB芯片对比及应用解析
  • STM32L4与磁性蜂鸣器实现低功耗声音交互方案
  • 教育的本质:教会孩子支付代价
  • TypeScript 开发AI Agents MCP 完整实战指南
  • 【JAVA毕设源码分享】基于SpringBoot+Vue的万象影视购票平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • FPGA实战(35):DAC多通道NCO频率上传设置模块设计与实现
  • 基于ADS127L11和MK60DN512VLQ10的高精度数据采集系统设计
  • 精密电子配件质量升级|蔡司 ATOS Q 三维扫描赋能线束端子全尺寸数字化检测
  • STM32与PAM8904实现智能声音警报系统设计
  • 如何快速配置AzurLaneAutoScript的MAA模块:完整优化指南
  • Sunshine游戏串流终极指南:轻松搭建家庭游戏共享中心
  • 2026年全国GEO/SEO优化培训班解析与选型,培训机构推荐及避坑指南
  • [特殊字符] OpenClaw 完整命令手册:从入门到精通的 CLI 终极指南
  • 【Java课程设计/毕业设计】基于前后端分离的智慧高校实验教学管理系统的设计与实现 基于 SpringBoot 的高校实训实验室综合管理系统【附源码、数据库、万字文档】
  • 军队文职备考进阶论:中教睿海如何以“全电子商务”专业服务成就修炼
  • ThinkPad风扇终极控制指南:如何在Windows上实现双风扇智能管理
  • A3910与PIC32MZ2048EFH144在嵌入式电机控制中的黄金组合
  • 静态住宅 IP 和动态住宅 IP 有什么区别?从公网地址、稳定性到使用场景一文讲清
  • Airtest自动化测试入门第一篇:环境搭建与5分钟上手
  • MCP3428与MK24FN1M0VDC12在工业数据采集中的优化应用
  • 直线电机在3D打印中的高速高精度运动控制实践
  • 手机号查询QQ终极指南:3步实现高效查询的完整解决方案
  • 9大网盘直链解析神器LinkSwift:告别限速困扰的终极解决方案
  • Ricon组态可视化编辑器 - 所见即所得的工业画布
  • MonoDETR 深度引导Transformer实战:KITTI数据集AP3D提升至28.84%的代码复现指南
  • 如何快速构建思源黑体TTF字体:免费商用中文字体完全指南
  • 咖啡门店点餐小程序怎么做?餐宝盈/BBWEYY/小艺助手/ModelArts/openPangu 2.0 Pro这5个小程序制作工具助你零基础搭建