You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:00:59