通过Terraform生成SSH密钥存为.ppk后Putty无法登录VM如何解决
问题解决方案
根本原因
你直接把Terraform输出的PEM格式私钥改后缀为.ppk是无效的:Terraform返回的tls_private_key.example_ssh.private_key_pem是OpenSSH标准的PEM私钥格式,PuTTY原生只支持自家的PPK密钥格式,必须经过格式转换才能正常使用。
操作步骤
1. 导出合法的PEM私钥文件
- 执行命令
terraform output -raw tls_private_key,完整复制输出的所有内容,包括开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----标记 - 将内容保存为后缀为
.pem的文件(例如vm_rsa.pem),Windows系统用记事本保存时,编码需选择UTF-8,不要选择带BOM的UTF-8或者ANSI编码,避免格式校验失败
2. 用PuTTYgen转换为PPK格式
- 打开PuTTY配套的PuTTYgen工具
- 点击顶部菜单 Conversions -> Import key,选择上一步保存的
.pem文件 - 确认页面显示的密钥指纹、公钥信息和你的配置一致后,点击 Save private key 按钮,保存得到的就是PuTTY可识别的合法PPK密钥文件
3. 配置PuTTY登录
- 打开PuTTY,在Session面板填写VM公网IP、SSH端口(默认22)
- 依次展开左侧菜单 Connection -> SSH -> Auth -> Credentials,在Private key file for authentication选择框里导入刚才生成的PPK文件
- 回到Session面板保存配置后点击Open,用户名填写
azureuser即可正常登录
异常排查点
如果转换后仍无法登录,可以逐一检查以下配置:
- 确认VM所属的网络安全组/本地防火墙已经放行了22端口的入站规则
- 登录VM后台检查
/home/azureuser/.ssh/authorized_keys文件的内容,和terraform output tls_private_key.example_ssh.public_key_openssh的输出完全一致 - 确认VM上
/home/azureuser/.ssh目录权限为700,authorized_keys文件权限为600,权限异常会导致SSH密钥校验失败
内容的提问来源于stack exchange,提问作者Suri
相关产品推荐
相关产品推荐

