[git]-Ubuntu上创建自己的git服务器&GitHub添加ssh密钥

目录

参考

linux.cn
liaoxuefeng的博客
官方手册,强烈推荐
如何生成自己的ssh密钥并添加到GitHub
GitHub help 生成密钥说明

命令行方式

搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。

1. 安装git

sudo apt-get install git

2. 创建一个git用户,并设置密码

sudo useradd git  //  或者 sudo adduser git
passwd git

3. 创建自己的ssh 密钥

为了能方便的访问git服务器,我们在我们的本机创建一个 ssh 密钥。 输入以下命令一路enter就行了。
如何生成自己的ssh密钥并添加到GitHub
GitHub help 生成密钥说明

ssh-keygen -t rsa -b 4096 -C ""
  • 这时会要求你输入保存密钥的路径,这时只需要点击回车保存在默认路径。
  • 第二个问题是输入访问远程服务器所需的密码。

它生成两个密钥——公钥和私钥。id_rsa id_rsa.pub 记下您在下一步中需要使用的公钥的位置。默认位置为 ~/.ssh/ 下面

4. 创建证书登录&给GitHub添加ssh密钥

收集所有需要登录的用户的公钥,就是将需要访问的用户的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

如果是新建的git服务器,没有authorized_keys文件。

cat ~/.ssh/id_rsa.pub | ssh  "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

后续的添加用户的id_rsa.pub.只需要追加到git用户的authorized_keys文件内就行了。

给GitHub添加ssh密钥很简单。 只需要到你GitHub账号的设置里面 new SSH并吧本地id_rsa.pub里面的内容复制进去就行了。

5. 管理公钥

如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,可以用Gitosis来管理公钥。

6.初始化Git仓库

用ssh 登录进服务器并为 Git 创建一个项目路径。

先选定一个目录作为Git仓库,假定是/src/learngit.git,在/src目录下 输入命令:(src是git用户下的目录)

sudo git init --bare learngit.git

会在src目录下面创建一个learngit.git的目录
如图所示:
[git]-Ubuntu上创建自己的git服务器&GitHub添加ssh密钥

Git就会创建一个裸仓库——即一个不包含当前工作目录的仓库,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区。
为了通过克隆你的仓库来创建一个新的裸仓库,你需要在克隆命令后加上 --bare 选项
按照惯例,裸仓库的目录名(是目录)以 .git 结尾,就像上面的那样。

然后,把owner改为git:

sudo chown -R git:git learngit.git

git init 和git --bare init的区别

7.克隆远程仓库

git clone :/home/git/src/learngit.git

假定/home/git/src/learngit.git是远程服务器上的项目路径。

管理权限

暂时略

可选:禁止git用户的shell登录

出于安全考虑,创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash
// 改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户

相关推荐