配置 Git 服务
配置 Git 服务,创建 Git 仓库
客户端密钥
每个需要使用 Git 的客户端都需要生成一份密钥, 首先去 ~/.ssh 查看自己是否已经有密钥
1 | $ cd ~/.ssh/ |
默认命名为 id_dsa / id_rsa 个人文件夹目录 ~/.ssh/
其中一个带有 .pub 扩展名, .pub 文件是你的公钥,另一个则是私钥。 如果找不到这样的文件(或者根本没有 .ssh 目录),你可以通过运行 ssh-keygen 程序来创建它们。
生成密钥
1 | $ ssh-keygen |
生成了客户端自己的一对密钥于 ~/.ssh/id_rsa
服务端设置
添加新用户
添加为了 git 的用户来仅创建或修改 Git 仓库相关的内容,禁止该用户登录和其他操作
首先登录 root 用户,创建该用户
1 | sudo adduser git |
切换至 git 用户
1 | su git |
创建 authorized_keys 并加入需要使用 Git 仓库客户端的 公钥
1 | cd |
将我们信任的开发者密钥(即第一步客户端生成的密钥)加入 authorized_keys 中,多个用户可多次添加至 authorized_keys 文件中
1 | cat /tmp/zacklee.pub >> ~/.ssh/authorized_keys |
保证 git 用户安全 (仅可使用 Git 服务)
切换回 root 用户,为 git 用户创建密码并禁止 git 用户的活动范围
1 | su root |
为 git 用户创建密码 (客户端使用 Git 服务时需要使用该密码,或将其他客户端公钥加入服务端实现免密码)
1 | passwd git |
为了保证 git 用户安全(仅使用 git 服务)借助一个名为 git-shell 的受限 shell 工具,你可以方便地将用户 git 的活动限制在与 Git 相关的范围内。
首先查看 是否有 git-shell,若没有则继续添加
1 | $ cat /etc/shells |
查询 git-shell 所在目录
1 | $ which git-shell |
添加 git-shell 目录行余文件尾
1 | sudo vim /etc/shells |
加入 git-shell 所在目录 /usr/bin/git-shell 至 /etc/shells 文件尾
修改用户的 shell
1 | sudo chsh git /usr/bin/git-shell # git-shell 路径 |
这样,git 用户就只能利用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell。 如果试图登录,你会发现尝试被拒绝。
创建新仓库
使用 root (或非 git 用户) 登录并创建新仓库,这里我们将所有 Git 仓库放置于 /opt/git/ 文件夹下,创建名为 project.git 的 Git 仓库并初始化一个空仓库
1 | $ cd /opt/git |
为 git 用户创建修改本仓库的相关权限
1 | sudo chown -R git:git /opt/git/project.git |
客户端初始化 Git 仓库
所有信任的客户端都应先将公钥添加至服务端,即使我们已经为 Git 服务单独创建名为 git 的用户,我们也应该保证尽量不暴露 git 用户的密码
创建项目文件夹 myproject,初始化并提交至 project.git
1 | cd myproject |
Clone 并参与项目
其他客户端参与项目,Clone project.git 并提交新代码
1 | git clone git@服务端地址:/opt/git/project.git |