如何在Linux上设置私人git服务器

我已经尝试了如何build立你自己的私人git服务器linux和私人远程git的存储区Ubuntu的linode,但我仍然有问题。

我的本地环境是Windows和我的远程Linux。 我有一些问题:

  1. 在第一篇文章中,它描述了为服务器设置公共ssh密钥 – 我从来没有这样做过,我不知道在哪里input命令(甚至不知道本地或远程!!): ssh myuser@server.com mkdir .sshscp ~/.ssh/id_rsa.pub myuser@server.com:.ssh/authorized_keys
  2. 在我的本地开发机器上,我应该运行msysgit ? 有没有替代品,因为我安装的版本是占用1.4 GB的! 我从http://code.google.com/p/msysgit/downloads/list安装了msysGit-netinstall-1.7.4-preview20110204.exe

我尝试跳过使用git用户和公钥,在远程机器上创build存储库,但是当我尝试git remote add origin ssh://[username]@[domain/ip/hostname]/srv/git/[project-name]作为root用户它说: fatal: Not a git repository (or any of the parent directories): .git

Solutions Collecting From Web of "如何在Linux上设置私人git服务器"

我不知道这是否应该在这里,或者如果它最好的迁移到另一个网站,但因为我可以帮助,我会继续前进,并回答。

我只是掠过你链接的文章。 看起来他们都是通过ssh来访问一个git服务器,这就是我所关注的。

首先,在你的服务器上:

您需要在服务器上设置一个帐户,以便您可以登录。这可以是通用的git帐户,也可以是您自己的个人帐户。 目前,我们假设您正在设置个人帐户。 你想要做的是创建你的账户,然后在那个账户可以访问的地方(比如在你的主目录)创建git仓库。

 mkdir myrepo.git cd myrepo.git git --bare init --shared=all 

所以现在你在服务器上有了一个git仓库。 根据你使用的git客户端,你现在可能不需要混淆键。 如果您的服务器上配置了SSH以允许密码登录,那么当您需要与服务器交互时,您可能只需连接并输入密码即可。 如果你想设置密钥,你需要做的是生成一个SSH公钥。 我不知道如何在Windows中执行此操作,但在Linux中,您可以执行如下操作:

 ssh-keygen -t rsa -b 1024 

该命令将生成两个文件“id_rsa”和“id_rsa.pub”; 无论你使用什么工具,也应该生成两个文件,一个公钥和一个私钥。 他们可能有不同的名称,但现在假设“id_rsa.pub”是您的公钥文件的名称。

你想把公钥拷贝到服务器上,你可以使用scp,ftp,或者使用thumbdrive来移动它。 无论哪种方式,一旦你把它放到服务器上,并且可以被你的用户访问,那你就以用户的身份登录到服务器上。 您希望将公钥添加到您的“authorized_hosts”文件中,因此,在登录到服务器上的帐户之后,请执行以下操作:

 cd mkdir .ssh cat id_rsa.pub >> .ssh/authorized_hosts rm id_rsa.pub 

现在,从你的工作站你需要配置你的SSH客户端使用您生成的私钥。 再一次,我不知道如何在Windows上这样做,它可能会有所不同,取决于你使用的是什么SSH客户端,所以你需要得到的信息在别的地方。

接下来,您需要创建本地存储库,添加一些文件并进行提交。 请注意,您无法克隆您所做的远程存储库,因为这里没有任何内容。 一旦你在本地做了一些提交,你需要在你的仓库里设置远程服务器。

如果你使用的是git命令行工具,你可以运行:

 git remote add origin user@yourserver:myrepo.git 

如果将存储库放在主目录以外的地方,请使用完整路径:

 git remote add origin user@yourserver:/path/to/repo.git 

请注意,您需要“.git”,因为您的目录名称中包含“.git”作为名称的一部分。

如果您正在使用GUI工具,那么您只需编辑存储库的配置文件。 这将位于“.git / config”下的存储库顶层。 你会想添加类似的东西

 [remote "origin"] url = user@yourserver:/path/to/repo.git fetch = +refs/heads/*:refs/remotes/origin/* 

现在你的远端已经配置好了,你有一些本地的提交,你可以将你的主分支推到服务器。 如果您使用的命令行使用:

 git push origin master 

或者,如果您正在另一个分支上工作:

 git push origin mybranch 

如果您使用的是GUI前端,那么您需要查找该工具的文档以了解如何推送。

我想推荐使用Gitolite ,它允许在访问控制和创建/ managin存储库等功能强大的中央srever上设置git托管。

而对于Windows来说,名为git-scm的工具可以用来设置git客户端,并且还有用于git存储库的GUI面板。 安装这个git工具之后,你会得到一个git bash工具和一个git GUI

Gitolite让git托管服务器和客户端非常简单。

我希望这可能会帮助那些正在寻找一个有效的解决方案来解决git托管服务器和客户端的一些容易理解的简单步骤的新人。

我跟着最投票的答案,我没有得到它的工作。 我发现这个教程: https : //www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys–2 ,我得到它的工作。 我认为问题是,在服务器中,公钥将被复制到文件“authorized_keys”而不是“authorized_hosts”。

  1. 我一直在试图使用腻子生成密钥对,但无法使其工作。 最后我意识到我可以使用ssh-keygen -C "git@example.com" -t rsa通过msysgit命令行生成密钥。 使用nano /home/git/.ssh/authorized_keys将公钥复制到服务器,然后嗨!
  2. 我已经下载完整的源代码,因此大小! 通过http://code.google.com/p/msysgit/downloads/list?can=3 ,非源代码应用Git-1.7.4-preview20110204.exe仅为13MB