如何在VPS上设置私有Git服务器

本教程将向您介绍如何使用SSH密钥设置完全成熟的Git服务器进行身份验证。

介绍

本教程将向您介绍如何使用SSH密钥设置完全成熟的Git服务器进行身份验证。 它不会有一个Web界面,这将只覆盖获得Git安装和您的访问设置。 我们将使用主机“git.droplet.com”代替将用于您的VPS的域。

如果您希望在工作时将代码保持为私有,这可能是一个很好的选择。 虽然开源性往往是现状,但有时候你不想让你的代码免费提供。 例如,如果您正在开发移动应用程序,特别是付费应用程序。 请记住,如果知道用于克隆的URL地址,任何人都可以阅读此代码,但这只有在他们知道的时候。

许多人都有一个主要的关注,这是一个到您的存储库的Web界面。 GitHub完成这个令人惊讶的好。 有迹象表明,你可以安装,如应用程序的gitosisGitList酒杯 我们不讨论本教程中的内容,但如果你严重依赖于图形界面,那么你可能需要查看这些内容,并考虑在安装Git服务器后立即安装其中的一个。

创建SSH密钥对

首先,我们需要生成一个SSH密钥对。 如果您使用的是Mac或Linux,则可以在终端中发出以下命令,但将电子邮件地址替换为自己的:

ssh-keygen -C "youremail@mailprovider.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/flynn/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in foo_rsa.
Your public key has been saved in foo_rsa.pub.
The key fingerprint is:
ab:cd:ef:01:23:45:67:89:0a:bc:de:f0:12:34:56:78 flynn@en.com
The key's randomart image is:
+--[ RSA 2048]----+
|    o+-+  ..     |
|  E o            |
|   . ++.o..      |
|    o o H .      |
|   . .   =       |
|    . =o.o=      |
| o .             |
|  .              |
|     = o  .      |
+-----------------+

我强烈建议在密钥文件上设置密码,这是一个安全层,并且影响非常小。 如果您使用基于Windows的操作系统,有一些工具可用于生成密钥对,例如PuTTY Gen,但它附带一个免责声明,您需要检查您的本地法律,使用它之前,因为一些国家已经禁止它的使用。 如果不是这样,您可以登录到您的VPS,创建密钥对,并下载id_rsa和id_rsa.pub供您使用。

接下来,VPS将需要一个专门用于Git的用户。 大多数人会简单地创建一个名为“Git”的用户,这就是我们为本教程做的,但随时可以为这个用户命名。

设置Git用户并在您的VPS上安装Git

登录您的VPS,并获得root *:

su -

*有些人感觉不舒服使用根这种方式。 如果你的VPS被设置为使用sudo,那么这样做。

添加Unix用户(不一定是Git用户名)来处理存储库:

useradd git

然后给你的Git用户一个密码:

passwd git

现在它很简单:

  • CentOS的/ Fedora的: yum install git
  • Ubuntu的/ Debian的: apt-get install git

将SSH密钥添加到访问列表

此时,您将希望以Git用户身份登录。 如果您尚未登录该用户,请使用此命令切换到该用户:

su git

现在,您需要将您的id_rsa.pub文件上传到您的Git用户的主目录。 一旦你这样做,我们需要让SSH守护进程知道什么SSH密钥接受。 这是使用授权密钥文件完成的,它位于点文件夹“ssh”中。 要创建此,输入:

mkdir ~/.ssh && touch ~/.ssh/authorized_keys

注意:在命令链中使用双“'”,它会告诉系统执行第一个命令,然后执行第二个命令。 使用路径开头的'tilde'将告诉系统使用你的主目录,所以'〜'成为/ home / git /你的VPS。

我们将使用'cat'命令,它将获取文件的内容并将它们返回到命令行。 然后我们使用'>>'修改器来处理输出,而不是在控制台中打印。 注意这一点,因为单个“>”将覆盖您指定的第二个文件的所有内容。 双'>'将追加它,所以确保你知道你想要做什么,在大多数情况下,它会更容易使用“>>”,以便你可以总是删除你附加,而不是寻找恢复你捣碎。

此文件中的每一行都是您希望访问此帐户的密钥的条目。 要添加刚刚上传的密钥,请键入以下内容,替换:

cat .ssh/id_rsa.pub | ssh user@123.45.56.78 "cat >> ~/.ssh/authorized_keys"

现在你可以看到密钥,如果你使用cat授权的密钥文件:

cat ~/.ssh/authorized_keys

如果您想要将其他人添加到您的访问列表,他们只需要提供您的id_rsa.pub密钥,并将其附加到授权密钥文件。

设置本地存储库

这是一个非常简单的过程,你只需调用Git命令,并在任何你想要的目录中初始化一个裸存储库。 假设我想使用“我的项目”作为项目标题。 创建文件夹时,我将使用所有小写字母,用连字符替换任何空格,并将“.git”附加到名称。 所以“我的项目”变成“我的项目。

要将该文件夹创建为空的Git存储库:

git init --bare my-project.git

而已! 您现在在您的VPS上设置了一个Git存储库。 让我们继续到如何使用它与本地计算机。

从本地计算机使用您的Git服务器

在Linux或Mac OS上,您需要将远程源更改为新创建的服务器。 如果已经有要推送到服务器的本地存储库,请使用以下命令更改远程:

git remote set-url origin git@git.droplet.com:my-project.git

如果这是您设置的新存储库,请使用:

git init && git remote add origin git@git.droplet.com:my-project.git

现在你可以添加,推,拉,甚至克隆,知道你的代码只有你自己可以访问。

但是如果你想要一些可信的人有权访问这个服务器,而你想保持简单的事情,通过按用户的名字排序它们? 一个简单而有效的方法是创建一个以每个人命名的文件夹,因此在Git用户列表的主文件夹中输入:

mkdir user1 user2

现在,当您指定远程存储库时,它将如下所示:

git remote add origin git@git.droplet.com:user1/user-project.git