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

使用Dokku的git:sync部署GitHub项目遇权限拒绝问题求助

解决Dokku git:sync权限拒绝问题的SSH密钥配置方案

核心逻辑

Dokku的git:sync功能是让Dokku服务器作为Git客户端主动拉取远程仓库(比如GitHub)的分支变更,所以需要给Dokku服务器配置能访问目标GitHub仓库的SSH密钥,并将对应公钥添加到GitHub仓库的部署密钥中。

具体配置步骤

1. 在Dokku服务器生成SSH密钥

登录Dokku服务器,切换到默认管理用户dokku:

su - dokku

生成高安全性的ED25519类型SSH密钥,一路回车使用默认路径和空密码:

ssh-keygen -t ed25519 -C "dokku-git-sync@your-server-domain"

查看并复制生成的公钥内容:

cat ~/.ssh/id_ed25519.pub

2. 在GitHub仓库添加部署密钥

打开目标GitHub仓库,进入「Settings」→「Deploy keys」页面:

  • 点击「Add deploy key」
  • 将复制的公钥内容粘贴到「Key」输入框
  • 填写备注名称(比如「Dokku git:sync Key」)
  • 勾选「Allow write access」(仅拉取变更可取消勾选,建议勾选避免后续权限限制)
  • 点击「Add key」完成添加

3. 配置Dokku应用使用该密钥

单个应用配置

针对特定应用指定SSH密钥路径:

dokku git:sync:set <你的应用名称> ssh-key-file /home/dokku/.ssh/id_ed25519

全局配置(所有应用生效)

设置所有Dokku应用共享该密钥:

dokku git:sync:set --global ssh-key-file /home/dokku/.ssh/id_ed25519

4. 验证权限有效性

在Dokku服务器执行以下命令,测试仓库访问权限:

git ls-remote git@github.com:<你的GitHub用户名>/<你的仓库名>.git

若能输出仓库分支及提交哈希信息,说明权限配置成功,此时执行dokku git:sync <你的应用名称>即可正常拉取变更。

注意事项

  • 确保SSH密钥文件权限合规:执行chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_ed25519,避免因权限过宽被Git拒绝
  • 必须以dokku用户身份生成密钥,否则Dokku进程无法读取密钥文件

内容的提问来源于stack exchange,提问作者user16540880

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:45:59