为Xcode Cloud配置SSH密钥以访问Bitbucket私有CocoaPods仓库
解决Xcode Cloud批量访问私有CocoaPods的SSH权限问题
针对你有大量私有CocoaPods、无法逐个授权的情况,用全局SSH密钥的方式可以一次性解决权限问题,步骤如下:
1. 生成无密码SSH密钥对
在本地终端执行以下命令,生成一对用于Xcode Cloud的SSH密钥(无密码,避免构建时需要手动输入):
ssh-keygen -t ed25519 -f ~/xcodecloud_pod_key -N ""
执行后会得到两个文件:xcodecloud_pod_key(私钥)和xcodecloud_pod_key.pub(公钥)。
2. 将公钥添加到Bitbucket权限系统
打开xcodecloud_pod_key.pub文件,复制全部内容,登录Bitbucket后:
- 如果是个人所有的仓库,进入个人设置→SSH密钥,粘贴公钥并保存;
- 如果是团队仓库,进入团队设置→SSH密钥,添加该公钥。
这样该密钥对应的账户就能访问所有有权限的私有仓库,无需逐个单独授权。
3. 配置Xcode Cloud构建前脚本
在Xcode项目中添加一个预构建脚本(或者在Xcode Cloud的构建方案里配置),用于在pod install前配置SSH环境:
# 初始化SSH目录并设置安全权限 mkdir -p ~/.ssh chmod 700 ~/.ssh # 从环境变量写入私钥(不要直接把私钥写在脚本里!) echo "$XCODECLOUD_SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 # 添加Bitbucket到可信主机列表,避免首次连接的确认弹窗 ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts # 配置Git强制使用指定的SSH密钥 git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes"
4. 在Xcode Cloud中添加私钥环境变量
登录App Store Connect,进入你的项目的Xcode Cloud设置:
- 找到Environment Variables选项;
- 添加一个名为
XCODECLOUD_SSH_PRIVATE_KEY的变量; - 把本地生成的
xcodecloud_pod_key文件里的私钥内容粘贴进去; - 勾选Secret选项,防止私钥泄露。
5. 确认Podfile的源配置
确保你的Podfile里的私有Spec仓库使用SSH地址,比如:
source 'git@bitbucket.org:your-team/your-pod-specs.git'
不要用HTTPS地址,这样CocoaPods才会通过SSH协议拉取仓库。
6. 触发测试构建
提交代码到仓库,触发Xcode Cloud构建,现在应该能自动完成pod install,无需逐个授权私有Pod仓库。
注意事项
- 私钥必须通过Secret环境变量传入,绝对不能把私钥内容直接写在脚本或提交到代码仓库;
- 确保Bitbucket上的公钥对应的账户拥有所有50个私有Pod仓库的访问权限;
- 如果习惯用RSA密钥,把脚本里的
id_ed25519改成id_rsa即可,但ed25519算法更安全高效。
内容的提问来源于stack exchange,提问作者Moinuddin Girach
相关产品推荐
相关产品推荐

