搭建私有Git服务器,其实比想象中简单
作为一名经常需要管理多个项目的开发者,我一直想要搭建一个私有的Git服务器。最初以为会很复杂,需要各种配置和专业知识,但实际操作下来发现,用Linux服务器加上Git自带的SSH协议,整个过程出奇地简单。今天我就来分享一下我的搭建经历,希望能帮助到有同样需求的你。
准备工作:选择服务器和安装Git
首先,你需要一台运行Linux的服务器。我用的是Ubuntu 20.04,但其他发行版也类似。确保服务器能通过SSH访问,并且安装了Git。如果没有,可以通过以下命令安装:
sudo apt update
sudo apt install git
安装完成后,验证Git版本:
git --version
如果看到类似 git version 2.25.1
的输出,说明安装成功。这一步我一次就搞定了,没遇到什么坑。
创建Git用户和仓库目录
为了安全,我建议创建一个专门的Git用户来管理仓库。这样能限制权限,避免意外操作。运行以下命令添加用户:
sudo adduser git
系统会提示你设置密码和其他信息,按需填写即可。然后,切换到Git用户,并创建仓库目录。我习惯把仓库放在 /home/git/repos
下:
sudo su - git
mkdir repos
cd repos
这里有个小提示:确保目录权限正确,避免其他用户访问。我一开始没注意,后来用 chmod
调整了权限,才避免了潜在问题。
初始化一个示例仓库
现在,我们来创建一个裸仓库(bare repository),用于远程协作。假设我要建一个叫 myproject.git
的仓库:
git init --bare myproject.git
裸仓库没有工作目录,只存储Git数据,适合做服务器端。创建后,你会看到类似 Initialized empty Git repository in /home/git/repos/myproject.git/
的输出。这时,仓库就已经可用了!我测试时,用 ls
命令确认了目录结构,一切正常。
配置SSH访问和权限
要让团队成员通过SSH访问,你需要将他们的公钥添加到Git用户的 authorized_keys
文件中。首先,退出Git用户(如果还在的话),然后切换到Git用户的主目录:
exit # 如果当前是Git用户
sudo su - git
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
接下来,将团队成员的公钥(例如 id_rsa.pub
文件内容)追加到这个文件中。你可以用编辑器手动添加,或者用命令:
echo "ssh-rsa AAAAB3NzaC1yc2E... user@example.com" >> ~/.ssh/authorized_keys
记得设置正确的权限,否则SSH可能拒绝连接:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
我在这一步遇到了权限错误,后来用 chmod
修复了。建议完成后,用 ssh git@yourserver
测试连接,确保能正常登录。
从本地克隆和推送仓库
现在,服务器端配置好了,我们来测试从本地机器克隆仓库。假设服务器IP是 192.168.1.100
,在本地运行:
git clone git@192.168.1.100:/home/git/repos/myproject.git
如果SSH密钥设置正确,你会看到克隆进度。然后,进入目录,添加一些文件并推送:
cd myproject
echo "# My Project" > README.md
git add README.md
git commit -m "Initial commit"
git push origin main
我第一次推送时,因为分支名是 master
而不是 main
,导致错误。记得根据你的Git配置调整分支名。成功后,你就有了一个全功能的私有Git服务器!
总结与踩坑提示
搭建私有Git服务器真的不难,核心就是利用Git和SSH的天然集成。整个过程我只花了不到半小时,主要时间花在调试SSH权限上。总结一下关键点:
- 使用专用Git用户提高安全性。
- 确保
authorized_keys
文件权限正确(600)。 - 测试时从本地克隆,避免网络或防火墙问题。
如果你遇到问题,多检查日志(如 /var/log/auth.log
)和权限设置。希望这篇教程能帮你轻松上手,如果有疑问,欢迎在评论区交流!
看完直接开干,半小时就搭好,真香👍