关于部署:SSH问题:我的服务器上的Codeship运行部署脚本无法从Github获取

SSH issue: Codeship-run deploy script on my server is failing to pull from Github

我将repo连接到运行测试的代码发布,然后通过ssh在服务器上运行脚本:

1
ssh [email protected] '/var/www/deploy-script.sh'

在我的服务器上,我已经设置了我的deploy用户。我的GitHub帐户中存储了该用户的公钥。我的项目的代码发布公钥也存储在~/.ssh/authorized_keys中。

deploy-script.sh中,我导航到repo目录,然后尝试git pull。显然,我需要在没有密码的情况下删除最新的代码,因为这是在一个虚拟机上运行的。codeship显然能够ssh进入我的服务器并运行部署脚本,但是日志报告:

1
2
3
> Pull updates from Github.
Permission denied (publickey).
fatal: Could not read from remote repository.

如果我以deploy用户身份登录到我的服务器并运行脚本,那么git pull工作正常。

我错过了什么?为什么Github不允许以部署用户而不是我的身份登录时进行访问?


似乎我忽略了ssh-agent没有在登录会话之间持久化,所以下次我以deploy用户身份登录时,我也得到了拒绝权限错误。在我的身份被添加之前,我必须再次访问ssh-add,我可以从github中提取。为了使其持久化,我按照下面的说明操作:使用ubuntu上的ssh-add永久地添加私钥。

~/.ssh/config中增加了以下内容:

1
IdentityFile ~/.ssh/deploy-key