如何在linux上设置私有git服务器

时间:2011-06-06 07:49:51

标签: windows linux git ssh

我已尝试关注how-set-up-your-own-private-git-server-linuxprivate-remote-git-repositories-ubuntu-linode,但我仍遇到问题。

我的本​​地环境是windows和我的远程linux。我有几个问题:

  1. 在第一篇文章中,它描述了为服务器设置一个公共ssh密钥 - 我以前从未这样做过,我不确定在哪里输入命令(甚至不确定是本地还是远程!!):{ {1}}和ssh myuser@server.com mkdir .ssh
  2. 在我的本地开发机上我应该运行msysgit吗?是否有替代方案,因为我安装的版本占用了1.4 GB!我从http://code.google.com/p/msysgit/downloads/list
  3. 安装了scp ~/.ssh/id_rsa.pub myuser@server.com:.ssh/authorized_keys

    我尝试跳过制作git用户和公钥,在远程计算机上创建了存储库但是当我以root用户身份尝试msysGit-netinstall-1.7.4-preview20110204.exe时,它说:git remote add origin ssh://[username]@[domain/ip/hostname]/srv/git/[project-name]

4 个答案:

答案 0 :(得分:18)

我不确定这应该在这里,还是最好迁移到不同的网站,但是因为我可能会帮助我继续回答。

我只是浏览了您链接的文章。看起来他们都在处理通过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前端,那么您需要查找该工具的文档以了解如何推送。

答案 1 :(得分:0)

我建议使用 Gitolite ,允许在中央srever上设置git hosting,具有访问控制和创建/管理存储库等强大功能。

对于Windows,名为git-scm的工具可用于设置git客户端,并且还具有用于git存储库的GUI面板。安装此git工具后,您将获得 git bash 工具和 git GUI

Gitolite 使得建立git托管服务器和客户端变得非常简单。

我希望这可以帮助那些正在寻找有效解决方案的新人,以便通过一些易于理解的简单步骤来设置git托管服务器和客户端。

答案 2 :(得分:0)

我遵循了最多的投票答案,但我没有让它发挥作用。我找到了这个教程: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 我得到了它的工作。我认为问题在于,在服务器中,公钥将被复制到文件" authorized_keys"而不是" authorized_hosts"。

答案 3 :(得分:-2)

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