服务器上安装git仓库和git本地
原文来自: https://blog.****.net/li_wen01/article/details/52411543
git服务器搭建,本来是一件简单的事情,但是因为网上的很多教程都不详细,造成的后果就是搭建出来的服务器很多的权限的问题,于是折腾了很久,简单记录一下。服务器上又是仓库又是本地.
例如:在服务器上gittest文件夹作为仓库,在服务器上test文件夹作为本地.
服务器系统:linux 7.2
服务器git版本:git version 1.9.0
客户端git版本:git version 1.7.9.5
服务端操作:
1.git 安装,不同系统有不同的安装方式,Google一下就有了。
2.创建一个git 用户,不需要为这个用户创建密码,用来运行git服务。
3.创建证书登录:
刚创建的git用户它是它是没有~/.ssh/和~/.ssh/authorized_keys文件的 ,因此这里需要手动创建,这里为了避免权限的问题 ,这里的文件创建全部使用git用户处理
adduser git
su - git
mkdir .ssh
chmod 700 .ssh
touch ~/.ssh/authorized_keys
chmod 644 ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys
把公钥复制到~/.ssh/authorized_keys这里需要注意:切换用户的时候,su - git 中间的 - 不能省略,不然后面可能会出现没有权限创建文件夹ssh。
4.初始化git仓库
为了避免权限的问题,下面的操作请使用开始创建的git用户操作。先选定一个目录作为Git仓库
su - git
cd /home/git/
mkdir gittest
git init --bare gittest
5.禁用shell登录
在网络上的很多教程都是通过编辑/etc/passwd文件来完成,
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
其实这里有一个坑,应该先使用which git-shell命令获得git-shell 的安装路径,在替换掉/bin/bash。
比如在我服务器中:
[[email protected] git]# which git-shell
/usr/local/bin/git-shell
那么上面的/etc/passwd文件就应该修改为:
git:x:1001:1001:,,,:/home/git:/usr/local/bin/git-shell
到这里服务器端的设置就结束
客户端操作(远程本地和服务器本地)
1.安装git
2.生成 id_rsa.pub文件
$ ssh-****** -t rsa
一路回车,不需要输入任何的密码,将生成的id_rsa.pub文件里面的内容拷贝到服务端的authorized_keys 文件。这样就可以通过git clone 命令来克隆远程仓库了。
[email protected]:~# git clone [email protected]:/home/git/gittest
Cloning into 'gittest'...
The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established.
RSA key fingerprint is 57:81:cc:7c:48:52:4e:a0:f2:16:86:84:ae:d2:32:ee.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.
结束。
然后将本地的项目git push传到服务器的仓库,最后在服务器上做本地获取 git pull.
---------------------
作者:li_wen01
来源:****
原文:https://blog.****.net/li_wen01/article/details/52411543