参考文章:
参考视频:
安装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.git
git配置
下载Git,本地安装,国内Windows平台Git安装包下载地址
安装完成后,右键使用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