参考文章:
- 廖雪峰-搭建Git服务器
- 使用Git搭建自己的私有/个人Git仓库
参考视频:
- 比较厉害点的视频来了,Git服务器的搭建,你学会了嘛。
安装git并创建用户国内Windows平台Git安装包下载地址
安装git
sudo apt-get install git
创建一个git用户,用来运行git服务
sudo adduser git创建远程仓库
选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令
--bare是指定创建裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区
sudo git init --bare sample.git
将新建仓库的拥有者改为我们希望的用户
sudo chown -R git:git sample.gitgit配置
下载Git,本地安装,国内Windows平台Git安装包下载地址
安装完成后,右键使用Git
需要本地用户和服务器上我们新建的用户都生成密钥对
首先本地windows用户,移动到用户根目录
cd ~ # 有目录的话删除.ssh目录 $rm -rvf .ssh
运行命令生成ssh密钥目录
ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # -C表示提供一个注释,用于识别这个密钥。 可以省略 # 注意:C是大写的,这里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名称,并不约束或要求具体命名为某个邮箱。 # 现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
进入.ssh目录查看文件列表
查看id_rsa.pub文件内容
服务端的密钥生成也是一样,先切换到指定用户,即我们之前新建的git用户
su git
在用户家目录新建.ssh目录
mkdir .ssh
进入.ssh目录并创建authorized_keys文件,用来存放用户访问的ssh公钥
touch authorized_keys
新建这个文件后,将本地用户生成的公钥即id_rsa.pub的内容复制到authorized_keys文件中,如果多用户,一个公钥一行
限制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用户指定的git-shell每次一登录就自动退出。
ssh git账号名@服务器IP



