步骤分为:
安装Git → 创建Git用户 → 创建Git远程仓库 → 配置ssh密钥 → 客户端clone测试一下
一、安装Git
$ su root #切换到root用户名
$ yum install git #用该命令执行git安装
运行结果如下:
[user@centos-linux ~]$ su root
密码:
[root@centos-linux user]$ yum install -y git
已加载插件:fastestmirror, langpacks
base | 3.6 kB 00:00
extras | 2.9 kB 00:00
updates | 2.9 kB 00:00
updates/7/x86_64/primary_db | 8.0 MB 00:02
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 git.x86_64.0.1.8.3.1-23.el7_8 将被 安装
--> 正在处理依赖关系 perl-Git = 1.8.3.1-23.el7_8,它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在处理依赖关系 perl(Term::ReadKey),它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在处理依赖关系 perl(Git),它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在处理依赖关系 perl(Error),它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在检查事务
---> 软件包 perl-Error.noarch.1.0.17020-2.el7 将被 安装
---> 软件包 perl-Git.noarch.0.1.8.3.1-23.el7_8 将被 安装
---> 软件包 perl-TermReadKey.x86_64.0.2.30-20.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
================================================================================
Package 架构 版本 源 大小
================================================================================
正在安装:
git x86_64 1.8.3.1-23.el7_8 base 4.4 M
为依赖而安装:
perl-Error noarch 1:0.17020-2.el7 base 32 k
perl-Git noarch 1.8.3.1-23.el7_8 base 56 k
perl-TermReadKey x86_64 2.30-20.el7 base 31 k
事务概要
================================================================================
安装 1 软件包 (+3 依赖软件包)
总下载量:4.5 M
安装大小:22 M
Downloading packages:
(1/4): perl-Error-0.17020-2.el7.noarch.rpm | 32 kB 00:00
(2/4): perl-Git-1.8.3.1-23.el7_8.noarch.rpm | 56 kB 00:00
(3/4): perl-TermReadKey-2.30-20.el7.x86_64.rpm | 31 kB 00:00
(4/4): git-1.8.3.1-23.el7_8.x86_64.rpm | 4.4 MB 00:01
--------------------------------------------------------------------------------
总计 2.8 MB/s | 4.5 MB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:perl-Error-0.17020-2.el7.noarch 1/4
正在安装 : perl-TermReadKey-2.30-20.el7.x86_64 2/4
正在安装 : perl-Git-1.8.3.1-23.el7_8.noarch 3/4
正在安装 : git-1.8.3.1-23.el7_8.x86_64 4/4
验证中 : git-1.8.3.1-23.el7_8.x86_64 1/4
验证中 : 1:perl-Error-0.17020-2.el7.noarch 2/4
验证中 : perl-Git-1.8.3.1-23.el7_8.noarch 3/4
验证中 : perl-TermReadKey-2.30-20.el7.x86_64 4/4
已安装:
git.x86_64 0:1.8.3.1-23.el7_8
作为依赖被安装:
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-23.el7_8
perl-TermReadKey.x86_64 0:2.30-20.el7
完毕!
可以查看一下git的版本:
[root@centos-linux user]$ git --version
git version 1.8.3.1
二、 增加一个git账户
为了管理的方便,在linux下面增添一个 “git” 账户。
$ adduser git #增加用户git
运行结果如下:
[root@centos-linux user]$ id git #查看git用户是否存在
id: git: no such user
[root@centos-linux user]$ useradd git #添加用户
[root@centos-linux user]$ passwd git #为用户创建密码,密码多余8个字符,不能是回文
#设置密码之后每次都需要输入密码
三、创建一个git远程仓库
- 进入/home/git(也可以自己另外指定用户文件夹)目录下面,创建一个叫做tmp.git的空git仓库
- 初始化远程仓库
$ sudo git init --bare tmp.git # tmp.git 为仓库名,可自行更换,但是后缀需为 .git
运行结果如下:
[root@centos-linux user]$ cd git
bash: cd: git: 没有那个文件或目录
[root@centos-linux user]$ cd ..
[root@centos-linux home]$ cd git
[root@centos-linux git]$ mkdir tmp.git # 创建文件
[root@centos-linux git]$ sudo git init --bare tmp.git # 初始化
初始化空的 Git 版本库于 /home/git/tmp.git/
[root@centos-linux git]$ ll # 查看文件夹拥有者
总用量 4
drwxr-xr-x. 7 root root 4096 5月 12 09:56 tmp.git # 这里拥有者是root用户
4.配置ssh密钥
一般说来,系统是有预装ssh的,如果没有自行安装一下:
$yum install ssh
然后开启ssh服务:
$service sshd restart
在git目录下找找看有没有 .ssh文件,没有的话新建一个 .ssh文件:
$mkdir .ssh
然后进入.ssh文件夹,在文件夹下面新建一个文件:
touch authorized_keys
运行示例如下:
[root@centos-linux git]$ yum install ssh
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
没有可用软件包 ssh。
错误:无须任何处理
[root@centos-linux git]$ service sshd restart
Redirecting to /bin/systemctl restart sshd.service
[root@centos-linux git]$ ls # 查看git文件内容,有没有.ssh
tmp.git
[root@centos-linux git]$ mkdir .ssh # 新建文件夹.ssh
[root@centos-linux git]$ cd .ssh # 打开文件夹
[root@centos-linux .ssh]$ touch authorized_keys # 新建文件authorized_keys
然后把客户端生成的ssh密钥复制粘贴到这个文件 authorized_keys 里面。
服务器端也是要生成密钥的,所以要执行:
$ ssh-keygen -t rsa #生成两个文件(id_rsa和id_rsa.pub)
服务器端运行示例如下:
我好几次生成了秘钥但是没有这两个文件,最后在文件命名那里直接输入id_rsa才生成,
密码是服务器端git账户的登入密码,密码如果不想每次都输的话就回车不填
#不能生成的一段
[root@centos-linux .ssh]$ ssh -keygen -t rsa
Bad escape character 'ygen'.
[root@centos-linux .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f1:1b:43:00:59:7f:e2:85:c1:1f:d8:fd:6c:a2:c5:51 root@centos-linux.shared
The key's randomart image is:
+--[ RSA 2048]----+
| .+o..o . .E|
| . oooo o |
| . =.oo + |
| = +. + +|
| S = o o |
| +. |
| . |
| |
| |
+-----------------+
[root@centos-linux .ssh]$ ls
authorized_keys
# 能够生成:
[root@centos-linux .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
29:8d:44:a2:25:c9:63:30:e9:49:bf:27:5c:a6:76:9c root@centos-linux.shared
The key's randomart image is:
+--[ RSA 2048]----+
|o+..o . |
|.o=+ o |
|o.+. . |
| o . + o . |
| . * + S |
| * E . |
| . + |
| |
| |
+-----------------+
[root@centos-linux .ssh]$ ls
authorized_keys id_rsa id_rsa.pub
我们随便找到一个linux系统,同样的执行命令:
ssh-keygen -t rsa
然后查看id_rsa.pub文件:
$cat id_rsa.pub
最后把客户端生成的ssh密钥复制粘贴到服务器的文件 authorized_keys 里面:
客户端查看密钥示例:
[root@centos-linux .ssh]$ cat id_rsa.pub # 查看密钥并复制这一段内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9sw4vDskWsMt35TIn+wMq4uO/VwCggY4FjGZimNkopVBm
CPf4tr/RtVsbZTaPhTf6nPIFNj/V1a5/EipRnviG1gVgK0Ng0CWB2GNbylNOU2cEPcXUEVBx//KBEkpilIEf
/+LbXzb1+/5JhTvmeyGiNc6TWKCUDygIQdaMx57qWVtNJ6hZsEjgk7iJ/ZgYp6NzwsjowtsB/xSL59N8Pywb
6NXssaETKnvsKW6B42n/uyL1HvYVQxzxJGfbgWK0fuIo97lxkUJKXaOdLItwpVIEyg5i3Fb8fbhtAu+GwXvJ
dXLcojP5a/JUrEovn+bEhBya/7uJ/OKhY8AWx4LbSiYn root@centos-linux.shared
粘贴到服务器authorized_keys中示例:
[root@centos-linux .ssh]$ vi authorized_keys # 运行之后按a进入编辑模式,Esc结束,ZZ退出
[root@centos-linux .ssh]$ cat authorized_keys # 查看内容是否粘贴完毕
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9sw4vDskWsMt35TIn+wMq4uO/VwCggY4FjGZimNkopVBm
CPf4tr/RtVsbZTaPhTf6nPIFNj/V1a5/EipRnviG1gVgK0Ng0CWB2GNbylNOU2cEPcXUEVBx//KBEkpilIEf
/+LbXzb1+/5JhTvmeyGiNc6TWKCUDygIQdaMx57qWVtNJ6hZsEjgk7iJ/ZgYp6NzwsjowtsB/xSL59N8Pywb
6NXssaETKnvsKW6B42n/uyL1HvYVQxzxJGfbgWK0fuIo97lxkUJKXaOdLItwpVIEyg5i3Fb8fbhtAu+GwXvJ
dXLcojP5a/JUrEovn+bEhBya/7uJ/OKhY8AWx4LbSiYn root@centos-linux.shared
一个密钥一行,一个密钥对应一个客户端
五、客户端clone测试一下
我们进入客户端主机(我用的是另一台云主机,也是linux系统的,如果是windows的话,需要下载git for windows版本的)。
在用户目录下新建一个test文件夹用来存放等下要clone的仓库:
进入test文件夹,执行:$git clone git@serveraddress:tmp.git
只要想新增客户端,只要生成ssh密钥,然后把密钥复制到服务器端下的.ssh/authorized_keys文件下,客户端就可以连接上git远程仓库了。
文章引用:
https://blog.youkuaiyun.com/qq_32685139/article/details/52426155
https://blog.youkuaiyun.com/fenlin88l/article/details/89151075