0
我使用Capistrano(v3.5.0)從我的本地開發機器上使用在Bitbucket上設置的部署密鑰部署到Linode上託管的VPS的小型Rails應用程序。就在上個星期,它就像一個魅力。爲什麼Capistrano在部署期間無法從我的Bitbucket Git存儲庫中讀取?
然而今天,當我運行通常cap deploy
命令,它沒有在第三步時,它試圖從我的到位桶Git倉庫閱讀:
DEBUG [6906a62c] Command: (export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.2.1"
GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/app/git-ssh.sh" ; /usr/bin/env git
ls-remote --heads [email protected]:klenwell/app.git)
這是錯誤:
DEBUG [6906a62c] conq: repository access denied.
DEBUG [6906a62c] fatal: The remote end hung up unexpectedly
我已經做了明顯的故障排除:搜索錯誤消息,確認VPS正在運行,驗證存儲庫是否可訪問,再次檢查SSH密鑰,確認SSH代理正在運行。如果一切都失敗了,我會嘗試在我的VPS主機上生成一個新密鑰。
特別是這些點中有我狼狽:
- 已經有(據我可以告訴)到Capistrano的或沒有變化的VPS配置,因爲它最後成功運行。我看到上週在我的Capistrano日誌中成功運行相同的命令。
- 當我以部署用戶的身份登錄到VPS服務器時,可以手動運行
ssh -T [email protected]
和相同的git命令,而不會出現問題。 - 我的本地機器上的Jenkins服務器可以使用其部署密鑰從相同的Bitbucket存儲庫成功讀取。
我錯過了什麼?
Capistrano的使用SSH代理轉發。實際上,這意味着它將使用您的本地* SSH密鑰與BitBucket進行身份驗證。您的本地密鑰是否已更改或不再具有BitBucket訪問權限? –
@MattBrictson你釘了它。我在本地系統上有多個Bitbucket用戶,我想默認情況下會在部署之間重置。無論如何,解決方法是將此行添加到我的'deploy.rb'文件中:'set:ssh_options,{forward_agent:false}'。將您的評論轉換爲答案,然後我選擇它。謝謝! – klenwell