Git(一)——在Linux下搭建Git服务器

Git系列

Git(一)——在Linux下搭建Git服务器

Git(二)——git本地使用

Git(三)——与远程仓库互动(clone、push)

Git(四)——本地版本管理

Git(五)——分支管理

Git(六)——标签管理


目录

 

① 安装 Git

② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

③ 服务器端创建 Git 仓库

④ 客户端 clone 远程仓库

⑤ 客户端创建 SSH 公钥和私钥

⑥ 服务器端 Git 打开 RSA 认证

⑦ 将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件

⑧ 客户端再次 clone 远程仓库

⑨ 禁止 git 用户 ssh 登录服务器


 

原文来自:https://www.cnblogs.com/dee0912/p/5815267.html

git官网:http://git-scm.com/

 

① 安装 Git

Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git

服务器端:

#yum install -y git

安装完后,查看 Git 版本

[root@localhost ~]# git --version
git version 1.7.1

客户端:

下载 Git for Windows,地址:https://git-for-windows.github.io/

安装完之后,可以使用 Git Bash 作为命令行客户端。

安装完之后,查看 Git 版本

$ git --version
git version 2.8.4.windows.1

② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

[root@localhost home]# id git
id: git:无此用户
[root@localhost home]# useradd git
[root@localhost home]# passwd git

③ 服务器端创建 Git 仓库

设置 /home/data/git/gittest.git 为 Git 仓库

然后把 Git 仓库的 owner 修改为 git

[root@localhost home]# mkdir -p data/git/gittest.git
[root@localhost home]# git init --bare data/git/gittest.git
Initialized empty Git repository in /home/data/git/gittest.git/
[root@localhost home]# cd data/git/
[root@localhost git]# chown -R git:git gittest.git/

④ 客户端 clone 远程仓库

进入 Git Bash 命令行客户端,创建项目地址(设置在 d:/wamp64/www/gittest_gitbash)并进入:

dee@Lenovo-PC MINGW64 /d
$ cd wamp64/www

dee@Lenovo-PC MINGW64 /d/wamp64/www
$ mkdir gittest_gitbash

dee@Lenovo-PC MINGW64 /d/wamp64/www
$ cd gittest_gitbash

dee@Lenovo-PC MINGW64 /d/wamp64/www/gittest_gitbash
$

 

然后从 Linux Git 服务器上 clone 项目:

$ git clone git@192.168.56.101:/home/data/gittest.git

如果SSH用的不是默认的22端口,则需要使用以下的命令(假设SSH端口号是7700):

$ git clone ssh://git@192.168.56.101:7700/home/data/gittest.git

  

当第一次连接到目标 Git 服务器时会得到一个提示:

The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.
RSA key fingerprint is SHA256:Ve6WV/SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ.
Are you sure you want to continue connecting (yes/no)? 

选择 yes:

Warning: Permanently added '192.168.56.101' (RSA) to the list of known hosts.

此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。

后面提示要输入密码,可以采用 SSH 公钥来进行验证。

⑤ 客户端创建 SSH 公钥和私钥

$ ssh-keygen -t rsa -C "472323087@qq.com"

此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub

id_rsa 是私钥

id_rsa.pub 是公钥

 

⑥ 服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存并重启 sshd 服务:

[root@localhost ssh]# /etc/rc.d/init.d/sshd restart

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

在 /home/git/ 下创建目录 .ssh

[root@localhost git]# pwd
/home/git
[root@localhost git]# mkdir .ssh
[root@localhost git]# ls -a 
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh

然后把 .ssh 文件夹的 owner 修改为 git

[root@localhost git]# chown -R git:git .ssh
[root@localhost git]# ll -a
总用量 32
drwx------. 5 git  git  4096 8月  28 20:04 .
drwxr-xr-x. 8 root root 4096 8月  28 19:32 ..
-rw-r--r--. 1 git  git    18 10月 16 2014 .bash_logout
-rw-r--r--. 1 git  git   176 10月 16 2014 .bash_profile
-rw-r--r--. 1 git  git   124 10月 16 2014 .bashrc
drwxr-xr-x. 2 git  git  4096 11月 12 2010 .gnome2
drwxr-xr-x. 4 git  git  4096 5月   8 12:22 .mozilla
drwxr-xr-x. 2 git  git  4096 8月  28 20:08 .ssh

⑦ 将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件

回到 Git Bash 下,导入文件:

$ ssh git@192.168.56.101 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

需要输入服务器端 git 用户的密码

 

回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:

[root@localhost git]# cd .ssh
[root@localhost .ssh]# ll
总用量 4
-rw-rw-r--. 1 git git 398 8月  28 20:08 authorized_keys

可以查看一下是否是客户端生成的公钥。

 

重要:

修改 .ssh 目录的权限为 700

修改 .ssh/authorized_keys 文件的权限为 600

[root@localhost git]# chmod 700 .ssh
[root@localhost git]# cd .ssh
[root@localhost .ssh]# chmod 600 authorized_keys ​​​​​​​
 

⑧ 客户端再次 clone 远程仓库

$ git clone git@192.168.56.101:/home/data/git/gittest.git

 

查看客户端项目目录:

 

项目已经 clone 了。

 

也可以使用 tortoiseGit 客户端来管理项目:

clone

⑨ 禁止 git 用户 ssh 登录服务器

之前在服务器端创建的 git 用户不允许 ssh 登录服务器

编辑 /etc/passwd

找到:

git:x:502:504::/home/git:/bin/bash

修改为

git:x:502:504::/home/git:/bin/git-shell

此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

### 如何在内网环境中搭建配置Git服务器 #### 安装Git软件 为了能够在内网环境成功部署Git服务器,首先需要确保目标机器已安装Git工具。对于Linux系统而言,可以通过包管理器来完成这操作;而对于Windows,则可以从官方网站获取最新版本的安装程序进行安装[^1]。 #### 创建专用用户账户 出于安全考虑,在建立Git服务之前应该先创建个新的用户专门用于管理和访问Git仓库。这步骤有助于隔离权限,防止不必要的风险发生。命令如下所示: ```bash sudo adduser git ``` 此命令适用于大多数类Unix操作系统,它会引导管理员设置新用户的初始密码以及其他必要参数[^3]。 #### 构建存储库位置 决定好要放置各个项目的根目录之后,就需要手动构建相应的文件夹结构以便后续使用。假设选择`/home/git`作为基址路径,那么执行下面这条指令即可实现目的: ```bash mkdir -p /home/git/repositories chown git:git /home/git/repositories chmod 700 /home/git/repositories ``` 上述脚本不仅建立了指定名称的新文件夹,同时还调整了其所属关系以及读写属性,从而保障只有特定身份才能对其进行修改操作[^4]。 #### 配置SSH无密码登录机制 为了让开发者能够更加便捷高效地同远端资源交互,通常还会启用基于SSH协议的身份验证方式,并允许客户端利用私钥代替传统口令来进行认证过程。具体做法是在每台工作站点生成对密钥对并将其中公开部分上传至中央节点上的对应账号之下。例如,在Windows平台上可通过以下步骤达成: 1. 打开Git Bash窗口; 2. 设置全局变量: ```bash git config --global user.name "Your Name" git config --global user.email "you@example.com" ``` 3. 生产RSA类型的秘钥对并显示公钥内容: ```bash ssh-keygen -t rsa -C "your_email@example.com" cat ~/.ssh/id_rsa.pub ``` 4. 将得到的结果粘贴进远程主机内的`.ssh/authorized_keys`文档里去。 #### 初始化裸仓库存储空间 当切准备工作都完成后就可以正式开启创建新的共享式代码库环节了。这里采用的是所谓的“裸”模式——即不含任何工作副本的状态,仅保留历史记录信息供克隆请求调用。实际应用中般会选择某个具体的项目名作为子级单位加入到先前准备好的总集合当中。比如针对名为`sample.git`的数据集来说,应当这样处理: ```bash cd /home/git/repositories/ sudo -u git git init --bare sample.git ``` 这段语句的作用在于切换当前上下文为刚才新建的那个特殊角色,接着在其管辖范围内启动个全新的、不带关联文件的工作区实例[^2]。 #### 测试连接有效性 最后但同样重要的环就是检验整个架构能否正常运作起来。挑选任意台联网PC尝试发起拉取动作看看能不能顺利取得预期成果。如果切顺利的话,恭喜您已经拥有了属于自己的私人版分布式版本控制系统!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值