在linux搭建git服务器

本文介绍如何在Linux环境下安装Git,并通过SSH公钥认证的方式为团队成员提供仓库写权限。包括生成公钥、配置服务器及解决常见连接问题。
git在linux上的安装不多说,参考下面的文章就可以顺利完成,主要是依赖的库。

[b]安装git[/b]
[url]http://progit.org/book/zh/ch1-4.html[/url]

git麻烦在用户管理及管理上,下面上三种解决办法:


如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。

有好几个办法可以让团队的每个人都有访问权。第一个办法是给每个人建立一个账户,直截了当但过于繁琐。反复的运行 adduser 并且给所有人设定临时密码可不是好玩的。

第二个办法是在主机上建立一个 git 账户,让每个需要写权限的人发送一个 SSH 公钥,然后将其加入 git 账户的 ~/.ssh/authorized_keys 文件。这样一来,所有人都将通过 git 账户访问主机。这丝毫不会影响提交的数据——访问主机用的身份不会影响commit的记录。

另一个办法是让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。只要每个人都能获得主机的 shell 访问权,任何可用的 SSH 授权机制都能达到相同效


为了简便选用了第二种办法,这种办法采用SSH公钥认证。

1、产生公钥
 ssh-keygen -C "你的email地址" -t rsa

后面直接回车直到结束,中间可以不需要任何设置,该命令将生成一对非对称的公\私密钥,默认它们被存储在:

XP/2003用户:c:\Documents and Settings\登陆名\.ssh

Vista用户: c:\Users\登陆名\.ssh

该.ssh文件夹下面,密钥放在id_rsa文件里面,不用理会它;
2、在linux服务器上将公钥加到git用户的authorized_keys文件中。
可以参考:[url]http://github.com/git-on-windows/rookies[/url]
git用户的建立及设置参考:[url]http://progit.org/book/zh/ch4-4.html[/url]

注意,git上的仓库对git用户要有写权限,同时需要将/etc/ssh/sshd_config中将RSA认证打开,即:


RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys


另外,我在ubuntu上连接用git用户连接时,报Agent admitted failure to sign using the key 错误,查了一下需要启动ssh-agent,然后添加id_rsa到ssh-agent中,再连接就可以了。
参考:[url]http://www.jiangmiao.org/blog/559.html[/url]
<think>嗯,用户想要在Linux系统上搭建Git服务器,我需要根据提供的引用资料整理出清晰的方法。用户引用的几篇资料都涉及Ubuntu系统下的Git服务器搭建,但侧重点不同:[^1]和[^2]是基础SSH协议搭建,[^3]提到GitLab这种更复杂的方案,[^4]包含Windows客户端的连接方法,[^5]则强调裸仓库的权限管理。 用户明确要求"Linux系统",没有限定发行版,但所有引用案例都是Ubuntu,所以优先采用apt-get的安装方式比较稳妥。注意到引用[^5]提到的裸仓库所有权变更(chown git:git)和引用[^4]的SSH密钥配置是通用关键点,需要重点强调。 用户可能遇到的实际痛点应该是权限配置和客户端连接问题。引用[^4]提供的Windows客户端命令很实用,特别是指定私钥路径的语法(core.sshCommand)容易出错,必须保留。同时要提醒防火墙设置和密钥权限(600),这在引用中没明说但属于常见故障点。 是否需要包含GitLab方案?虽然用户没明确要求,但引用[^3]出现了GitLab安装步骤,可以作为进阶选项提一下,毕竟企业用户可能需要Web界面管理。不过基础方案应该优先采用SSH协议裸仓库,因为引用[^1][^2][^5]都以此为主线,更符合"搭建git服务器"的核心诉求。 最后客户端连接部分要区分Linux和Windows场景——引用[^4]专门解决了Windows连接问题,这是很多教程忽略的细节,必须保留。测试步骤也要补充,比如git clone后推送空提交验证,避免用户搭建完才发现配置错误。 生成的问题要覆盖延伸需求:权限进阶管理(比如多个团队协作)、Git升级方法(Ubuntu默认源版本较旧)、备份策略这些实用场景。用户是公司项目使用,这些生产环境问题可能会后续浮现。 </think>以下是基于引用资料的Linux系统搭建Git服务器完整流程(以Ubuntu为例): --- ### 一、基础环境准备 1. **安装Git** ```bash sudo apt update && sudo apt install git -y ``` 2. **创建专用用户**(避免使用root) ```bash sudo adduser git sudo passwd git # 设置密码 ``` --- ### 二、服务器端配置 #### 方法1:SSH协议裸仓库(推荐) 1. **创建仓库目录** ```bash sudo mkdir /srv/git sudo chown git:git /srv/git ``` 2. **初始化裸仓库** ```bash sudo -u git bash cd /srv/git git init --bare sample.git # 项目名替换sample ``` > 裸仓库无工作区,安全性更高[^5] 3. **配置SSH密钥访问** - 将客户端公钥(`id_rsa.pub`)内容添加到服务器: ```bash sudo -u git mkdir /home/git/.ssh sudo -u git vi /home/git/.ssh/authorized_keys # 粘贴公钥 sudo chmod 600 /home/git/.ssh/authorized_keys # 关键权限设置! ``` --- #### 方法2:GitLab高级方案(需Web界面时) ```bash # 引用[^3]简化步骤 sudo apt install curl openssh-server ca-certificates postfix curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo EXTERNAL_URL="http://your_server_ip" apt install gitlab-ce ``` > 访问 `http://your_server_ip` 完成初始化配置 --- ### 三、客户端连接(Windows/Linux通用) ```bash git clone git@yourserver_ip:/srv/git/sample.git \ --config core.sshCommand="ssh -i ~/.ssh/id_rsa" # 指定私钥[^4] ``` > 注意替换: > - `yourserver_ip` → 服务器IP > - `/srv/git/sample.git` → 实际仓库路径 > - `~/.ssh/id_rsa` → 客户端私钥路径 --- ### 四、关键注意事项 1. **防火墙开放端口** ```bash sudo ufw allow 22 # SSH端口(必开) sudo ufw allow 80 # 若使用GitLab需开HTTP ``` 2. **权限管理建议** ```bash sudo chown -R git:git /srv/git # 确保仓库属主正确[^5] ``` 3. **安全强化** - 禁用git用户shell登录: ```bash sudo vi /etc/passwd # 修改行: git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell ``` --- ### 测试验证 ```bash # 客户端操作 cd sample.git echo "# Test" > README.md git add . && git commit -m "Initial commit" git push origin main ``` > 成功推送即搭建完成 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值