阿里云ECS+Git(三)

1,078 views

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

本文就来讲一下使用git来构建远程服务器,及本地git仓库的clone与push,pull。

1、建立远程git服务器

建立远程git服务器到本地的clone/push/pull,一般需要经过下几个步骤。

  • 安装git(可选)
  • 建立远程git用户(可选,建议)
  • 建立远程git目录,并初始化(git init –bare)
  • 修改远程git目录的owner为git用户(可选)
  • 创建远程git用户’~/.ssh/authorized_keys’文件,并修改文件权限
  • 禁用远程shell登录git账号

1> 安装git,命令如下。如果已安装可以跳过,可以输入git测试。

1
apt-get install git

2> 建立远程git用户

远程登录终端,执行以下命令,并输入git用户的密码。

1
2
3
adduser git
#输入git的用户密码
#以次回车,或自定义git用户的内容,最后输入Y。

40

3> 建立远程git目录,并初始化(git init –bare)

选择或创建一个目录做为git目录,然后执行以下命令,一般git远程仓库都会以git结尾。

1
2
cd /home/git
git init --bare work.git

40看到上面的界面就表示git初始化成功了,这仅仅是一个空的仓库,不过没关系。同时通过ls -al命令也看到这个仓库现在是属于root用户的,那么git用户是没有权限修改的。接下来我们就来修改仓库的所属用户。

4> 修改远程git目录的owner为git用户

如果是以git用户登录创建的可以跳过,以root或其它用户创建的话,以root用户远程登录,然后执行一下命令:

1
chown -R git:git work.git

42

5> 创建远程git用户’~/.ssh/authorized_keys’文件,并修改文件权限 

authorized_keys文件是记录仓库可访问者的ssh公钥,需要远程登录git用户添加并修改文件权限,执行以下命令:

1
2
3
4
5
6
7
login git #ssh git@ighoo.com
cd ~
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys

48 49

6> 禁用远程shell登录git账号

一般来说我们会设置不允许git用户远程shell登录,只允许git-shell的push和pull,这样可以让服务器相对安全一些(不过最好在authorized_keys文件创建并权限修改成功后设置)。具体方法如下:

方法一:通过编辑/etc/passwd文件完成,找到类似下面的一行:

1
git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

方法二:通过以下shell命令

1
2
3
4
which git-shell   #查看一下git-shell的位置 /usr/bin/git-shell
echo /usr/bin/git-shell >> /etc/shells  #将git-shell的路径添加到/etc/shells文件中
chsh git #修改git用户的shell
#输入 /usr/bin/git-shell 回车

a

通过测试实际第二种的作用也是修改了/etc/passwd的相应内容,换句话说就是效果是一样的,唯一区别是第一个没有修改/etc/shells文件。

OK,到这里服务器上的就先告一段落了。接下我们说一下client本地仓库的部分。


2、cline远程git仓库,并push/pull

添加一个本地仓库,
相对比较简单了,需要以下几个步骤。

  • 安装git
  • 生成本地ssh公钥‘~/.ssh/id_rsa.pub’
  • 将本地ssh公钥添加到远程git用户的‘~/.ssh/authorized_keys’文件
  • 本地git client的clone/push/pull

1> 安装git

安装git可以参考服务器部分,或根据不同的系统安装相应的版本,这里就不多说了。如果是第一次使用git,需要先配置git的用户名和用户邮箱。如下:

1
2
git config --global user.name "ighoo"
git config --global user.email ighoo@ighoo.com

45

2> 生成本地ssh公钥‘~/.ssh/id_rsa.pub’

如果已经生成过,可以直接使用~/.ssh/id_rsa.pub文件内容。生成命令如下:

1
2
ssh-keygen -t rss -C "ighoo@ighoo.com"
#一路回车即可

44

3> 将本地ssh公钥添加到远程git用户的‘~/.ssh/authorized_keys’文件

使用cat命令显示文件内容,然后远程登录终端将内容copy到git用户的authorized_keys文件。authorized_keys里一行代表一个用户。

1
2
3
4
5
6
7
8
9
10
11
cat ~/.ssh/id_rsa.pub
#远程登录终端,git账号的用户文件夹是在/home/git
cd /home/git/.ssh
vi authorized_keys
#复制id_rsa.pub内容并保存,先复制好id_rsa.pub的文件内容,然后整个vi操作过程如下:
G   #shift+g,移到尾行
o    #新起一行并开始编辑
command+v   #粘贴命令
ESC  #退出编辑
:wq    #保存并退出
回车   #执行

4 > 本地git client的clone/push/pull

在本机上,选择或创建git仓库目录,可以不用.git结尾。执行clone命令:

1
2
3
4
5
6
7
8
9
10
11
cd ~
mkdir work
cd work
git clone git@ighoo.com:work.git .
touch readme.md
git add readme.md
git commit -a -m "add read"
#push,并添加默认push源
git push git@ighoo.com:work.git master -u 
git push
git pull

47


OK,git相关的服务器及client部分都讲完了,到此结束。

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注