如何使用Deploy key完成鉴权以调用Github API?
核心前提说明
首先,Github API 默认不直接使用普通Deploy key作为授权凭证,但你可以通过SSH签名认证的方式,用已有Deploy key对应的SSH私钥完成API调用授权,不需要依赖PAT。
具体实现步骤
- 第一步:确认你的Deploy key对应私钥的格式,优先使用RSA、Ed25519类型的私钥,确保本地可以正常读取私钥文件
- 第二步:构造API请求时,按照Github SSH认证规范,对请求的指定字段用私钥做签名,生成认证头
- 第三步:把生成的SSH认证头加入请求头后调用API即可
可用Python模块
推荐使用 requests + cryptography 组合手动实现签名逻辑,也可以直接用封装好的 ghapi 模块,它原生支持SSH密钥认证方式,不需要自己实现复杂的签名流程。
代码示例(基于ghapi)
首先安装依赖:pip install ghapi cryptography
示例代码:
from ghapi.core import GhApi from ghapi.auth import load_ssh_key # 读取本地Deploy key对应的私钥文件,有密码的私钥可以传入密码参数 private_key = load_ssh_key("/path/to/your/private_key") # 初始化API实例,用SSH私钥认证 api = GhApi(auth=private_key) # 示例:调用获取仓库信息的API repo_info = api.repos.get(owner="仓库所属用户名", repo="仓库名称") print(repo_info)
注意事项
- 你的Deploy key需要有对应操作的权限,比如要调用写入类API,需要提前给Deploy key开启写权限
- 私钥文件请做好权限控制,避免泄露
- 如果是部署在服务器上,建议把私钥存放在安全的密钥管理服务中,不要明文写在代码里
内容的提问来源于stack exchange,提问作者Steve Roger
相关产品推荐
相关产品推荐

