将GitHub私有repo克隆到远程服务器上

时间:2012-03-13 13:05:51

标签: git ssh github workflow remote-server

请注意,这是我一直关注的原始文章:
http://www.markdotto.com/2011/11/02/how-to-deploy-sites-via-github/

为您提供一些背景信息:我们在组织帐户下设置了私人仓库。我们有三个开发人员(包括我自己),他们拥有我们自己的GitHub帐户,并拥有私人仓库的管理员权限。

在处理项目时,我们克隆了repo,然后创建了一个'dev'分支。我们每个人都在我们自己的开发分支工作,并将更改推送到GitHub上的'dev'分支。

我们希望将这个dev分支放到我们的远程服务器上,这样我们就可以在将它合并到我们的主分支(应该是干净的/总是可部署的)之前测试组合代码的工作原理。

从这里开始,我们按照上面的文章步骤通过SSH连接到我们的服务器,转到托管我们网站的相关目录并运行以下命令......

git clone git@github.com:ORGANISATION/REPO.git dev

我们遇到的第一个问题是我们的服务器返回了消息......

Cloning into dev...
ssh: connect to host github.com port 22: Connection refused
fatal: The remote end hung up unexpectedly

...在哪里,我希望它能要求我们输入密码?

所以我们尝试了HTTP网址...

git clone https://USER@github.com/ORGANISATION/REPO.git dev

...您会注意到,在克隆时,HTTP网址会立即使用我自己的USERNAME。我输入密码并显示Cloning into dev...,但随后显示以下错误...

error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://Integralist@github.com/StormCreative/MoneyRepublic.com.git/info/refs
fatal: HTTP request failed

......我不明白错误。

那么我们如何将这个私人仓库克隆到我们的服务器上呢?

任何帮助表示赞赏!

亲切的问候, 标记

2 个答案:

答案 0 :(得分:11)

第一个问题发生是因为您没有在GitHub上链接到您的帐户的本地rsa密钥(是的,您将rsa密钥链接到您的帐户,并且该组织也链接到您的帐户)。

在您尝试克隆存储库的本地计算机(或远程服务器)中,您需要生成一个rsa密钥:

ssh-keygen -t rsa

当您生成密钥时,您选择了一个密码和一个存储id_rsa.pub文件的位置,该文​​件实际上包含密钥。

在GitHub上,您需要将此密钥(id_rsa.pub的确切内容)添加到您帐户管理面板上的ssh密钥中。

答案 1 :(得分:0)

我不确定我是否可以帮助您解决看起来像SSL问题的错误。但我可以建议你另一种方法。我以这种方式将我的博客部署到我的服务器:

  • 我在服务器上创建了一个名为deploy的git repo。
  • 我已将此部署仓库添加为我本地仓库的远程服务器。
  • 当我想部署时,我将更改推送到此repo。
  • 在我的部署仓库中,我设置了一个post-receive挂钩,这样无论何时推送更改,它都会自动克隆Apache主机目录中服务器上的repo,该目录服务于我网站的最新版本。

如果您需要,我可以为您提供我收到后挂钩的要点。如果您的网站位于rails中,则可以使用Capistrano进行部署。

编辑:这是我的收件后挂钩

GIT_REPO=$HOME/aliirz.git
PUBLIC_WWW=/var/www/myrepo

git clone $GIT_REPO $PUBLIC_WWW
exit

此致

编辑:上面的drgomesp答案完全是解决方案。我不介意你需要将你的SSH密钥与Github联系起来。