我正在尝试通过位桶管道将我的应用程序自动部署到数字海洋。这是我的部署遵循的步骤:
我已经成功设置了对我的遥控器的ssh访问。我还配置了对我的存储库的ssh访问,并且可以从远程服务器成功执行git clone。 但是,在管道中,虽然成功连接到远程服务器,但git clone命令失败,并显示以下错误。
git@bitbucket.org:权限被拒绝(公钥)。 致命的:无法从远程存储库读取。
有人知道这里发生了什么吗?
这是我的bitbucket-pipelines.yml
image: atlassian/default-image:latest
pipelines:
default:
- step:
deployment: production
script:
- cat deploy.sh | ssh $USER_NAME@$HOST
- echo "Deploy step finished"
还有部署脚本deploy.sh
#!/usr/bin/env sh
git clone git@bitbucket.org:<username>/<my_repo>.git
cd my_repo
docker-compose up -d
记录git clone ssh命令within the droplet和from the pipeline
答案 0 :(得分:0)
Git默认使用默认的ssh密钥。
您可以通过设置GIT_SSH_COMMAND
环境变量来覆盖git使用的SSH命令。您可以添加-i
参数以使用其他SSH密钥。
export GIT_SSH_COMMAND="ssh -i ~/.ssh/<key>"
git clone git@bitbucket.org:<username>/<my_repo>.git
GIT_SSH
GIT_SSH_COMMAND
如果设置了这些环境变量之一,则当git fetch和git push需要连接到远程系统时,它们将使用指定的命令而不是ssh。传递给已配置命令的命令行参数由ssh变体确定。有关详细信息,请参见git-config [1]中的ssh.variant选项。
$ GIT_SSH_COMMAND优先于$ GIT_SSH,并且由外壳程序解释,从而允许包含其他参数。另一方面,$ GIT_SSH必须只是程序的路径(如果需要其他参数,则可以是包装外壳脚本)。
通常,通过您的个人.ssh / config文件配置任何所需的选项更加容易。有关更多详细信息,请查阅ssh文档。