介绍
本教程将向您介绍如何使用SSH密钥设置完全成熟的Git服务器进行身份验证。 它不会有一个Web界面,这将只覆盖获得Git安装和您的访问设置。 我们将使用主机“git.droplet.com”代替将用于您的VPS的域。
如果您希望在工作时将代码保持为私有,这可能是一个很好的选择。 虽然开源性往往是现状,但有时候你不想让你的代码免费提供。 例如,如果您正在开发移动应用程序,特别是付费应用程序。 请记住,如果知道用于克隆的URL地址,任何人都可以阅读此代码,但这只有在他们知道的时候。
许多人都有一个主要的关注,这是一个到您的存储库的Web界面。 GitHub完成这个令人惊讶的好。 有迹象表明,你可以安装,如应用程序的gitosis , GitList和酒杯 。 我们不讨论本教程中的内容,但如果你严重依赖于图形界面,那么你可能需要查看这些内容,并考虑在安装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