GitHub Actions部署到阿里云服务器时,SSH连接突然失败怎么办?
之前用GitHub Actions部署到阿里云服务器一直正常,但今天突然报错Permission denied (publickey),我检查了SSH密钥文件和known_hosts都没问题,防火墙也放行了端口,这是怎么回事啊?
我的workflow里用的是这个步骤:
- name: SSH deploy
uses: appleboy/ssh-action@v0.1.5
with:
host: ${{ secrets.HOST }}
username: root
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 22
script: cd /var/www && git pull
现在提示SSH session not established: Permissions 0644 for '/home/action/.ssh/id_rsa' are too open,之前没改过配置文件权限啊…
关键是这句:Permissions 0644 for '/home/action/.ssh/id_rsa' are too open
意思是你的私钥文件权限是 0644,SSH 要求必须是 0600(也就是只有所有者可读写),否则就认为不安全,直接拒绝。
你可以试试这样改一下你的 workflow 步骤,在 ssh-action 前加一个步骤,手动设置密钥权限:
不过注意,如果你用了
key参数传私钥,ssh-action 内部也会写文件,可能还是会遇到同样的权限问题。稳妥一点的做法是别用key字段,直接用系统生成的密钥文件路径。或者升级一下 ssh-action 版本,新版本比如 v1.0.0+ 已经修复了很多权限问题。我之前也卡过这问题,升级完就好了。
另外提醒一下,secrets.SSH_PRIVATE_KEY 里不要带多余的空格或换行,最好用 | 这种方式写 multiline secret,不然也可能出问题。