问题克隆GitHub的私人回购到远程服务器

问题克隆GitHub的私人回购到远程服务器

问题描述:

注意,这是我一直在伴随着下面的原创文章:
http://www.markdotto.com/2011/11/02/how-to-deploy-sites-via-github/问题克隆GitHub的私人回购到远程服务器

给你一点背景知识:我们下一个私人回购的建立一个组织账户。我们有三个开发人员(包括我自己),他们拥有我们自己的GitHub账户并拥有私人回购的管理员权限。

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

我们希望将这个开发分支放到我们的远程服务器上,这样我们可以在合并到我们的主分支(应该是干净的/始终可部署的)之前测试合并的代码作品。

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

git clone [email protected]: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://[email protected]/ORGANISATION/REPO.git dev

...你会发现HTTP URL使用我自己的用户名,现在克隆时。我输入密码并显示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://[email protected]/StormCreative/MoneyRepublic.com.git/info/refs 
fatal: HTTP request failed 

...我不理解的错误。

那么我们如何克隆这个私人回购到我们的服务器?

任何帮助表示赞赏!

亲切的问候, 马克

+0

[HTTPS github access](http://stackoverflow.com/questions/3777075/https-github-access) – ralphtheninja 2012-03-13 13:12:11

第一个问题是因为你没有本地RSA密钥连接到您的帐户GitHub上(是的,你链接RSA密钥到您的帐户,而该组织也链接到您的帐户)。

在本地机器(或远程服务器),您试图克隆库,你需要生成一个RSA密钥:

ssh-keygen -t rsa 

当你产生密钥,你选择一个密码和存放id_rsa.pub文件的地方,它实际上包含了密钥。

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

+0

感谢您的答复。我尝试使用命令'ssh-keygen -t rsa -C“my-github-email-account”'生成SSH,并在它询问“输入要保存密钥的文件(/root/.ssh/id_rsa ):“我放入”github_mark“,然后输入密码(两次)。 但我无法找到需要复制的SSH密钥数据,因此我可以将其添加到GitHub的https://github.com/settings/profile#ssh_bucket页面中? – Integralist 2012-03-13 16:07:19

+0

我还假设'/ root/.ssh/id_rsa'可以容纳多个键,因此我可以在输入密码之前输入'github_mark'的名称。 – Integralist 2012-03-13 16:11:51

+0

这就是为什么他们建议你不要在“输入要保存密钥的文件(/root/.ssh/id_rsa)”部分写入任何内容。只需按回车键,选择密码,公钥将位于该确切路径中(/root/.ssh/id_rsa)。 – 2012-03-13 16:13:24

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

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

如果您需要,我可以为您提供我的邮件接收钩的要点。如果您的网站在rails中,则可以使用Capistrano进行部署。

编辑:这里是我的后收到钩

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

git clone $GIT_REPO $PUBLIC_WWW 
exit 

问候

编辑:以上drgomesp的答案是完全的解决方案。它跳过了我的想法,你需要你的SSH密钥与Github连接起来。

+0

感谢您的反馈 - 我只是在等待一些来自@drgomesp的反馈,所以我希望看到后接收钩子,因为这也可以帮助。 – Integralist 2012-03-13 16:10:56

+0

是的,如果您可以发送您的post-receive钩子,请注意,因为似乎drgomesp的解决方案目前还没有解决(请参阅我们的讨论) – Integralist 2012-03-13 16:32:41