GitHub Actions中Terraform创建Azure Linux VM后SSH登录失败排查
问题解答
1. 需放入authorized_keys的密钥类型
直接用**public_key_openssh**。Linux系统的authorized_keys仅接受标准OpenSSH格式的公钥,Terraform生成的public_key_openssh就是这种格式(开头为ssh-rsa/ecdsa-sha2-nistp256等标识);而PEM格式的公钥(public_key_pem)是ASN.1编码格式,无法直接用于authorized_keys。
2. .ssh目录及文件的必要配置
你遇到的权限拒绝和密钥格式错误,大概率是目录/文件权限不符合SSH的严格要求:
.ssh目录权限必须设为700(仅所有者可读、可写、可执行)authorized_keys文件权限必须设为600(仅所有者可读、可写)- 如果用私钥登录,私钥文件(比如runner侧的
id_rsa)权限也得是600
3. GitHub Actions中SSH登录的正确密钥配置流程
VM侧(目标服务器)
在Terraform创建VM时,将public_key_openssh的内容注入到VM对应用户目录下的~/.ssh/authorized_keys中——可以通过Azure资源的ssh_keys参数直接配置,也用Terraform provisioner写入。
GitHub Actions Runner侧
- 将Terraform输出的
private_key_openssh内容写入runner的~/.ssh/id_rsa(或自定义路径) - 执行命令设置权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa - 登录时指定该私钥(如果不是默认路径):
ssh -i ~/.ssh/id_rsa <username>@<vm-fqdn/ip>
关键错误提醒
- 不要把私钥放到
authorized_keys里,这个文件仅用于存储允许登录到当前机器的公钥 - 不要直接用PEM格式密钥进行SSH操作,OpenSSH格式才是SSH客户端默认支持的标准格式
内容的提问来源于stack exchange,提问作者RAnand
相关产品推荐
相关产品推荐

