软件研发 --- 网络安全 之 putty生成无密码登录密钥
🔑 第一步:使用 PuTTYgen 生成密钥对
首先,我们需要使用 puttygen.exe 来创建密钥。
-
运行 PuTTYgen:在你的电脑上找到并双击运行
puttygen.exe。 -
选择密钥类型:建议在底部的 "Type of key to generate" 选项中选择
Ed25519或RSA。这两种是目前最主流和安全的类型。 -
生成密钥:点击 Generate 按钮。此时,你需要在进度条下方的空白区域随意移动鼠标,这个过程是为密钥生成提供随机数据,直到进度条走完即可。
-
⚠️ 核心步骤:设置密码短语(Passphrase)
-
要实现无密码登录,关键在于此处必须留空。请确保 "Key passphrase" 和 "Confirm passphrase" 字段保持为空白。
-
⚠️ 安全提示:无密码登录虽然方便,但也意味着任何获得你私钥的人都能直接登录你的服务器。这是一个重大的安全风险。除非是在高度受控的测试环境,否则强烈不建议在实际工作或生产环境中使用无密码的密钥。建议设置一个强密码短语(记住它),并结合下文将提到的 Pageant 工具实现“输入一次,多次免密”的效果。
-
-
保存密钥文件:
-
保存私钥:点击 Save private key 按钮,将私钥保存为一个
.ppk文件。 -
⚠️ 复制公钥(重要):不要使用界面上的 "Save public key" 按钮,这样保存的文件格式可能会导致后续配置失败。正确的做法是:选中 "Public key for pasting into OpenSSH authorized_keys file" 文本框内的全部内容,然后复制下来。这个文本就是我们要配置到服务器上的公钥。
-
☁️ 第二步:将公钥部署到远程服务器
接下来,需要将公钥内容添加到远程服务器的指定文件中。
-
登录服务器:使用 PuTTY 或其他 SSH 客户端,通过密码方式先登录你的Linux服务器。
-
粘贴公钥:
-
在服务器上执行以下命令,创建或编辑
authorized_keys文件:mkdir -p ~/.ssh chmod 700 ~/.ssh vim ~/.ssh/authorized_keys -
进入编辑模式(按
i键),将之前复制的公钥内容粘贴到一个新的一行中。 -
保存并退出文件。
-
-
设置文件权限:为了安全,需要设置正确的文件权限:
chmod 600 ~/.ssh/authorized_keys此命令确保只有文件所有者(你自己)可以读写这个重要的文件。
🖥️ 第三步:配置 PuTTY 客户端
现在,我们回到 Windows 端,配置 PuTTY 使用刚才生成的私钥文件进行认证。
-
打开 PuTTY:启动
putty.exe。 -
配置基本连接:在 "Session" 界面,输入你的服务器 IP 地址和端口号(默认为 22)。
-
指定认证私钥(关键步骤):
-
在左侧导航树中,依次展开并选择 Connection -> SSH -> Auth -> Credentials。
-
在右侧的 "Private key file for authentication" 部分,点击 Browse 按钮。
-
在弹出的文件选择窗口中,找到并选中你在第一步中保存的
.ppk私钥文件。
-
-
保存会话:返回 "Session" 界面,为这个配置输入一个名称(比如 "MyServer"),然后点击 Save 按钮。这样,下次你只需要双击这个保存的会话就能直接连接,无需重复配置。
🧪 第四步:测试无密码登录
-
在 PuTTY 主界面,选中你刚刚保存的会话名称,然后点击 Open 按钮。
-
如果一切配置正确,你应该会直接进入服务器的命令行界面,而不会被提示输入密码。恭喜你,免密登录配置成功!。
💡 进阶技巧:使用 Pageant 实现“一次解锁,多次免密”
如果你出于安全考虑为私钥设置了密码短语,但又不想每次登录都输入它,可以使用 PuTTY 自带的密钥管理工具 Pageant。
-
启动
pageant.exe,它会在系统托盘区显示一个图标。 -
右键点击该图标,选择 "Add Key"。
-
选择你的
.ppk私钥文件,并输入一次密码短语。 -
之后,只要 Pageant 还在运行,任何 PuTTY 会话都会自动使用它加载的密钥进行认证,无需再次输入密码。这种方式很好地平衡了安全性和便利性。
🧰 常见问题排查
| 错误信息 | 可能原因 | 解决办法 |
|---|---|---|
| "Permission denied (publickey)" | 1. 私钥与公钥不匹配 2. 服务器上公钥配置不正确 3. 文件或目录权限设置错误 |
1. 重新生成并确认密钥对匹配。 2. 登录服务器,检查 ~/.ssh/authorized_keys 文件的内容是否与本地生成的公钥完全一致。3. 严格检查并修正服务器上 .ssh 目录权限为 700,authorized_keys 文件权限为 600。 |
| "Server refused our key" | 服务器端的 SSH 服务未开启公钥认证 | 登录服务器,编辑 /etc/ssh/sshd_config 文件,确认并修改以下配置:PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys修改后,执行 sudo systemctl restart sshd 重启 SSH 服务。 |
| "PuTTY key format too new" | 尝试使用的私钥格式过新,与当前PuTTY版本不兼容 | 使用PuTTYgen工具加载你的私钥文件,然后通过菜单栏的 Conversions -> Export OpenSSH key (或类似选项)重新导出为兼容的格式。 |
| 其他问题 | 认证过程细节不明 | 在 PuTTY 中启用详细日志记录:Connection -> SSH -> Logging,然后在 "Logging" 部分选择 "SSH packets and raw data"。通过分析日志文件来定位问题根源。 |
遵循以上步骤和提示,你应该能够顺利地配置 PuTTY 进行无密码登录。切记谨慎评估无密码登录的安全风险,并尽量采取折中方案以保障系统安全
