Ubuntu 18.04搭建git服务器

在网上查找各种教程,最终在本地访问的时候总是需要输入密码。分析是因为用户权限的问题,最后确认也确实是用户权限的问题,不清楚网上那些教程最后是怎么实现的。

整理一下配置过程,作为备份

首先是安装git

sudo apt-get install git

创建用户git(我后续发生问题就是从这开始的,生成公钥私钥的时候要切换到git用户否则会出现权限问题,其他方法自行探索吧)

adduser git

在这个过程中会要求输入密码。

然后给git用户添加sudo权限,这部分涉及到后续切换到git用户下进行操作,部分操作需要sudo权限。当然权限熟的话,通过命令行进行设置可以跳过此步。

sudo  usermod -aG sudo git

切换到git用户

su - git

创建存储目录

mkdir code

初始化裸仓库,具体裸仓库啥意思我也不明白

git init --bare test.git

教程上都喜欢使用tree来查看文档目录,想看到话先装个tree

sudo apt-get install tree
tree

就可以看到文档目录了。

然后就是创建公钥和私钥了,目的是允许用户不需要密码访问git服务器

使用shh-keygen生成公钥和私钥,也可以使用其他工具

ssh-keygen -t rsa -C "[email protected]"

会在/home/git/.ssh/路径下生成id_rsa和id_rsa.pub两个文件,其中id_rsa为私钥,将其存储在本地机器windows系统/用户/.ssh目录下;将id_rsa.pub内容添加到/home/git/.ssh/authorized_keys中

cat id_rsa.pub >> .ssh/authorized_keys
修改ssh的配置文件/etc/ssh/sshd_config,去掉这一行的注释 AuthorizedKeysFile  .ssh/authorized_keys....


重启ssh

service ssh restart

在整个过程中一定要注意,操作的都是git用户的根目录,即/home/git/这个路径下。

然后就是git服务器的安全性的一些设置,参考文档中这部分有问题,完全按照参考文档,是无法实现无密码访问的,主要原因就是ubuntu用户权限的问题。

注意:按照我的操作,切换到git用户下是不需要这部分操作的。

修改目录权限

chmod 755 /home/git
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

然后呢就是禁用git用的bash,即不允许切换用户使用命令行修改git里的内容,这一步比较奇葩,我理解不了。因为按照参考文献,禁用bash之后无法切换到git用,然后使用你ubuntu系统默认用户在git用户下进行操作包括生成密钥私钥的操作都会产生用户权限问题,导致无法无密码访问,而参考文献忽略了权限问题最后也实现了无密码访问,不知道怎么操作的。

在密钥生成之后可以把git的bash禁掉,因为毕竟密钥这个需要时生成即可,为了安全可以禁用bash。

具体操作修改/etc/passwd


git:x:1001:1001:,,,:/home/git:/bin/bash

修改为

 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

最后回到本地机器,在目标目录右键选择git clone,然后在地址栏里输入

ssh://[email protected]/home/git/code/test.git

然后就可以正常使用了。

然后得增强功能就是设置局域网内git服务器的远程访问的问题,首选是在路由器上做端口映射,这部分就跳过。

然后是设置git的监听端口号,我这里用的是60000-63000

采用ssh连接所以我直接修改ssh的配置文件

/etc/ssh/sshd_config 找到#Port 22 在后面添加Port 60001(此方法是否有效还需要进行验证,后续进行修改)










猜你喜欢

转载自blog.csdn.net/weixin_42219068/article/details/80865634