Ubuntu服务器搭建Git服务
1.安装git
Linux服务器系统默认应该会安装git服务,如果没有安装git,需要手动安装
未设置root密码:
beomni@gitserver:~$ sudo -i
[sudo] password for beomni: #input beomni password
已设置root密码:
beomni@gitserver:~$sudo passwd root
设置密码
beomni@gitserver:~$su root #切换root用户
安装完成后,可查看git版本
root@gitserver:~# apt-get install -y git #安装Git
root@gitserver:~# git --version #查看Git版本
git version 2.25.1
Windows系统安装git需要下载git for windows,进入官网下载:Git for Windows;
双击,默认安装。
安装完成后,可以右键选择git bash,进入git命令行模式查看版本
$ git --version
2.Linux服务器创建新用户来管理git仓库
root@gitserver:~# cd /home
root@gitserver:/home# id git
id: 'git': no such user
root@girserver:/home# useradd git #add new user git
root@gitserver:/home# passwd git #setting git user password
New password:
Retype new password:
passwd:password updated successfully
3.创建git仓库,并将管理者变成新创建的git用户
root@gitserver:/home# mkdir -p ./git/repository/gittest.git
root@gitserver:/home# ls
beomni git
root@gitserver:/home# cd git
root@gitserver:/home/git# ls
repository
root@gitserver:/home/git# cd repository
root@gitserver:/home/git/repository# ls
gittest.git
root@gitserver:/home/git/repository# git init --bare ./gittest.git
Initialized empty Git repository in /home/git/repository/gittest.git/
root@gitserver:/home/git/repository# cd ..
root@gitserver:/home/git# ll
total 12
drwxr-xr-x 3 root root 4096 Oct 2 08:36 ./
drwxr-xr-x 4 root root 4096 Oct 2 08:36 ../
drwxr-xr-x 3 root root 4096 Oct 2 08:36 repository/
root@gitserver:/home/git# chown -R git:git repository
root@gitserver:/home/git# ll
total 12
drwxr-xr-x 3 root root 4096 Oct 2 08:36 ./
drwxr-xr-x 4 root root 4096 Oct 2 08:36 ../
drwxr-xr-x 3 git git 4096 Oct 2 08:36 repository/
root@gitserver:/home/git# apt-get install openssh-server #安装SSH服务器
root@gitserver:/home/git# apt install net-tools #安装网络工具
...
root@gitserver:/home/git# ifconfig -a #查看本地IP地址
...
4.打开Windows上的git,通过服务器IP地址克隆服务器git项目
$ cd /d
$ mkdir gittest
$ cd gittest/
$ git clone git@服务器公网IP地址:/home/git/repository/gittest.git
?yes
... password: #input password
warning: Your appear to have cloned an empty repository.
$ ssh-keygen -C "your@email.com"
...:
...:
...:
此时c:\users\用户名.ssh文件夹下会多出两个文件id_rsa和id_rsa.pub.
5.在Ubuntu服务器里创建保存公钥的文件夹
root@gitserver:~# vim /etc/ssh/sshd_config
...
RASAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
...
save and restart
root@gitserver:~# sudo service sshd restart
root@gitserver:~# cd /home/git
root@gitserver:/home/git# pwd
/home/git
root@gitserver:/home/git# mkdir .ssh
root@gitserver:/home/git# chown -R git:git .ssh
root@gitserver:/home/git# ll -a |grep .ssh
6.windows客户端打开git bash,将公钥直接复制到.ssh/authorized_keys里
$ ssh git@服务器公网IP地址 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
7.回到Ubuntu服务器端,查看.ssh下是否存在authorized_keys文件
root@gitserver:~# cd /home/git/.ssh/
root@gitserver:/home/git/.ssh# ll
root@gitserver:/home/git/.ssh# cat authorized_keys
root@gitserver:/home/git/.ssh# cd ..
root@gitserver:/home/git# chmod 700 .ssh
root@gitserver:/home/git# cd .ssh/
root@gitserver:/home/git/.ssh# chmod 600 authorized_keys
客户端再次clone项目,发现不需要密码
8.禁用git用户ssh登录服务器
root@gitserver:~# sudo vi /etc/passwd
#find
git:x:1001:1001::/home/git:/bin/sh
#modify
git:x:1001:1001::/home/git:/bin/git-shell
此时git用户可以正常通过ssh使用git,但无法通过ssh登录系统