Linux搭建个人git版本仓库

1. 安装git

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

yum install -y git

安装完后,查看版本

git -version

windows下就是一键安装了

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

[root@localhost /]# id git # 查看用户
[root@localhost /]# useradd git
[root@localhost /]# passwd git

设置 /home/git/cangku/test为版本仓库

[root@localhost /]# mkdir /home/git/cangku
[root@localhost git]# chmod -R 777 cangku/
[root@localhost git]# mkdir /home/git/cangku/test
[root@localhost git]# chmod -R 777 /home/git/cangku/test

3.创建远程 git 仓库

若远程服务器未安装git 安装设置过忽略下面两步

apt-get install git

设置git

git config --global --globsl user.name 'your name'

git config --global --globsl user.email  'your email'

开始创建仓库

mkdir  project.git

cd  project.git

git  --bare init  // --bare 创建一个裸仓库
#或者
mkdir  test
cd  test
git init --bare  // --bare 创建一个裸仓库

由于创建一个git账户来管理仓库,所以把 Git 仓库的 owner(属主/属组) 修改为 git

[root@localhost cangku]# chown -R git:git ./test

然后可以 ll 进行查看,然后就可以在windows下进行克隆项目

$ git clone ssh://git@192.168.1.100/home/git/cangku/test #可能需要输入git用户密码
#或者
$ git clone ssh://root@192.168.1.100/home/git/cangku/test #此时输入root密码

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

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

此时 C:\Users\用户名.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。
后面提示要输入密码,可以采用 SSH 公钥来进行验证。

客户端创建 SSH 公钥和私钥

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

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

id_rsa 是私钥

id_rsa.pub 是公钥

4.本地新建仓库加入远程仓库

mkdir  myproject

cd myproject 

git init

#新增文件

touch  test.txt

git add .

git commit -m 'frist commit'

git remote add origin test@1806.cksoft.win:/home/test/project.git

git push origin master

5.服务器端 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
#或者
service sshd restart
#或者
/bin/systemctl restart sshd.service

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

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

[root@localhost /]# mkdir ~/.ssh
[root@localhost /]# cd ~
[root@localhost /]# ll -a  #查看隐藏的文件夹

注意:把 .ssh 文件夹的 owner 修改为 git

[root@localhost git]# chown -R git:git .ssh

将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件,在 widnows下的桌面中打开 git bash,执行

$ ssh git@192.168.1.100 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
git@192.168.1.100's password:

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

[root@localhost git]# cd .ssh
[root@localhost .ssh]# ll

或者手动创建完成拷贝
从本地 拿到 要免密登录的机器用户的 id_rsa.pub 中的密钥,依次存入authorized_keys中

也可以查看下 authorized_keys是否是客户端生成的公钥

[root@localhost .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDL3bQwEDbwQ+ghkq/BO8rj8AExFWldopPMyWI6NHfVHCzMrHqVcJrLG7RtEDQD+lTDJIXjKF/SoxLfTyLEQrazbbP/JJImo4XJVTt+KGc3z6gw4vQndz0CPmpKzYECx6rmoicYXTp/amX/T9O4TTJUI3de5fY/pwy5stJ3Fm4SlFGic3DSJDiIlRCPECtUheZ3Rxt9bx6CXdaCmu3m5pZbWnOuhV8VhAmPY5kA5eR1iG36nnlMmZZyr50lPN0rGFGFOzJ7FjMCyt6NlCpVqvL+zt2TtCzwtYDv4dQrKCIDBnTisz+Y0R/bj22vosixYij+0WTEzK6Vm81wkw8nkLPh Administrator@PC-20190319UHLW

**重点:更改 .ssh 与 authorized_keys权限为git **

[root@localhost git]# chown git:git  .ssh
[root@localhost git]# cd .ssh
[root@localhost .ssh]# chown git:git  authorized_keys 

必须重要:
重启服务 systemctl restart sshd

修改 .ssh 目录的权限为 700

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

6. 禁止 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 登录系统。

7. 设置git钩子(push之后,项目同步)

进入我们的裸仓库的 hooks文件夹,然后新建一个 post-receive 文件。

cd hooks/
vim post-receive
#加入如下内容:

#!/bin/bash
git --work-tree=/www/test checkout -f

其中/www/test为你实际需要同步的站点目录。
然后修改post-receive为可执行文件(其实这就是一个脚本文件)

chmod +x post-receive

post-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。其实git还提供了很多其它动作的钩子。
注意:同时你还需要修改你的web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(你也可以通过添加git用户到相应的用户组来解决问题)
修改所属用户

chown git:git -R /www    # 修改所属用户

设置好钩子后,当你本地再次执行push的时候,你会发现你web目录的文件也同步的更新了

8.ssh命令使用

客户端 ssh

登录:

  ssh  172.24.8.131
  ssh root@172.24.8.131
  ssh -p 22 root@172.24.8.131     

2.直接执行命令 -->最好全路径

  ssh root@172.24.8.131  ls -l  /mnt                       
         ==>ssh root@192.168.25.137 /bin/ls -ltr /backup/data       

3.查看已知主机

 cat /root/.ssh/known_hosts

ssh自带的sftp功能

Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多。
windows中可以使用Core FTP,FileZilla, WinSCP,Xftp来连接SFTP进行上传,下载文件,建立,删除目录等操作。
Window和Linux的传输工具
wincp filezip
sftp -->基于ssh的安全加密传输
sftp客户端连接

sftp -oPort=22 root@192.168.25.137                   
put /etc/hosts /tmp                   
get /etc/hosts /home/omd   

sftp小结:
1.linux下使用命令: sftp -oPort=22 root@x.x.x.x
2.put加客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录

### 回答1: 要在Linux搭建Git远程仓库,需要按照以下步骤进行操作: 1. 安装Git:在Linux上安装Git,可以使用命令行工具或者包管理器进行安装。 2. 创建Git用户:为了安全起见,最好为Git创建一个专门的用户,用于管理Git仓库。 3. 创建Git仓库:使用Git命令创建一个空的Git仓库,可以在本地或者远程服务器上创建。 4. 配置Git仓库:为Git仓库设置一些基本的配置信息,如用户名、邮箱等。 5. 克隆Git仓库:在本地或者其他服务器上克隆Git仓库,可以使用SSH或者HTTP协议进行克隆。 6. 推送代码:将本地代码推送到Git仓库中,可以使用Git命令或者Git客户端进行操作。 7. 拉取代码:从Git仓库中拉取代码到本地,可以使用Git命令或者Git客户端进行操作。 以上是在Linux搭建Git远程仓库的基本步骤,具体操作可以根据实际情况进行调整。 ### 回答2: 在Linux系统中,我们可以通过Git搭建一套远程仓库,以方便团队进行代码的共享和管理。下面是一个简单的步骤: 1. 安装Git:在Linux系统中使用以下命令安装Git: ``` sudo apt-get install git ``` 2. 创建git用户:使用以下命令创建一个名为git的用户: ``` sudo adduser git ``` 3. 创建Git仓库:在git用户的home目录下创建仓库文件夹,例如: ``` sudo mkdir /home/git/repo.git ``` 4. 初始化仓库:使用以下命令初始化仓库: ``` sudo git init --bare /home/git/repo.git ``` 5. 设置仓库访问权限:在仓库目录下使用以下命令设置权限: ``` sudo chown -R git:git /home/git/repo.git sudo chmod -R 755 /home/git/repo.git ``` 6. 创建SSH密钥:使用以下命令在本地机器上创建SSH密钥: ``` ssh-keygen ``` 7. 将公钥添加至仓库:将生成的公钥(~/.ssh/id_rsa.pub)添加至git用户的.home目录下的authorized_keys文件中,例如: ``` sudo su git cd /home/git mkdir .ssh cd .ssh touch authorized_keys nano authorized_keys ``` 在authorized_keys文件中添加公钥。 8. 克隆仓库:使用以下命令将远程仓库克隆到本地: ``` git clone git@ip:/home/git/repo.git ``` 其中,ip为远程服务器的IP地址;repo.git仓库文件夹。 至此,我们已经成功地在Linux系统中搭建了一个Git远程仓库。我们可以让团队成员通过SSH协议访问该仓库,并进行代码的管理和共享。 ### 回答3: Git是一个流行的版本控制系统,可以通过Linux操作系统搭建Git远程仓库。以下是搭建Git远程仓库的步骤,这将有助于您在Linux上设置仓库。 1.安装Git软件包:首先,安装Git软件包。Git是一个自由软件,可以从Git网站上免费下载。您可以使用以下命令安装Git: sudo apt-get install git 如果您使用的是不同的Linux发行版,请选择相应的命令来执行安装。 2.创建Git用户:创建一个专用的Git用户,充当版本控制仓库的管理员。此操作可增强安全性。 sudo adduser git 创建用户时,设置密码和其他信息。 3.创建Git仓库:选择要在Linux服务器上设置的Git仓库目录,并创建目录。然后为用户Git设置目录权限。 sudo mkdir /opt/git sudo chown git:git /opt/git 创建完成后,使用以下命令进入目录: cd /opt/git 您可以使用以下命令初始化仓库,并将它设置为共享资源: sudo git init --bare --shared=my-group my-project.git 其中 my-group 是组名,my-project.git 是创建的仓库。同时,Git要求您对各个项目分配名称。 4.设置远程访问:您应该设置一个访问Git仓库的方式。为此,请在虚拟主机上打开SSH,并创建仓库访问的公钥和私钥。 您可以使用以下命令生成SSH密钥: sudo su - git ssh-keygen -t rsa 将公钥添加到Git仓库: sudo cat /home/git/.ssh/id_rsa.pub >> /opt/git/my-project.git/.ssh/authorized_keys 5.下载代码仓库:现在,您可以将代码版本控制仓库Linux服务器下载到客户端。为此,您需要标识仓库位置、仓库名称以及提供SSH密钥。 git clone git@<ServerIpAddressOrHostname>:<RepositoryDirectory>/<RepositoryName>.git 最后,您可以使用以下命令离开Git用户: # exit 总之,以上是在Linux服务器上设置Git远程仓库的步骤。通过这些步骤,您可以更好地管理和维护仓库,从而更加有效地管理代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值