zoukankan      html  css  js  c++  java
  • 【Git学习】Linux下搭建Git服务器

    1、安装Git

    见 Jenkins持续集成环境部署 第四节

    2、创建Git用户和用户组

    1 groupadd git
    2 useradd git -g git

    3、创建证书
    切换到git用户创建证书

    1 su git
    2 cd /home/git
    3 mkdir .ssh
    4 chmod 700 .ssh
    5 touch .ssh/authorized_keys
    6 chmod 600 .ssh/authorized_keys

    注意:.ssh的权限必须是700,authorized_keys的权限必须是600

    生成公钥和私钥文件

    1 $ cd .ssh
    2 $ ssh-keygen -t rsa

    首先会让你输入要保存公钥的位置,直接回车即可,接着会提示让你重复一个密码两次,如果不想再使用公钥的时候输入密码,直接回车即可。完成后会在home目录下的.ssh目录中生成两个文件id_rsa(私有密钥)和id_rsa.pub(公钥)。

    4、初始化Git仓库

    首先,我们选定一个目录作为Git仓库,假定是/home/gitdeport/runoob.git

    复制代码
    1 $ cd /home
    2 $ mkdir gitdeport
    3 $ chown git:git gitdeport
    4 $ cd gitdeport
    5 $ git init --bare runoob.git
    6 Initialized empty Git repository in /home/gitdeport/runoob.git/
    复制代码

    以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:

    1 $ chown -R git:git runoob.git

    5、在客户端安装git

    先安装git,再安装TortoiseGit,安装好后打开Git Bash:

    6、设置用户名、邮箱

    Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改。如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

    如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置,如下图:

    7、将Windows客户端和Linux服务端关联起来

    想要将客户端和服务端连接的话要创建证书登录

    打开windows的git bash,输入ssh-keygen -t rsa -C “邮箱”,生成ssh私钥和公钥,如下图:

    此时,C:Users用户名.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub。id_rsa 是私钥,id_rsa.pub是公钥。

    收集所有需要登录的用户的公钥,公钥位于id_rsa.pub文件中,把我们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

    服务端Git打开RSA认证

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

    保存后重启sshd服务:

    将客户端公钥加到服务器

    将客户端公钥id_rsa.pub文件的内容写到服务器端 /home/git/.ssh/authorized_keys 文件里

    注:以上密钥只适用于使用Git Bash进行命令管理git的,即clone、push、pull等相关操作在Git Bash才不用输入密码,而如果使用TortoiseGit 可视化界面,仍然要输入密码。

    8、在客户端clone远程仓库

    将服务器上的/home/gitdeport/runoob.git库克隆到本地 git clone 用户名@服务器地址:仓库路径,如下图:

    造成上面报错的原因是Linux服务器上git的安装路径是/usr/local/git,不是默认路径,根据提示,在git服务器192.168.182.130上, 建立链接文件:

    1 ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack 

    再次执行clone命令成功,如下图:

    这个过程有一点要千万注意:.ssh的权限必须是700,authorized_keys的权限必须是600

    9、禁用git用户的shell登录

    出于安全考虑,创建的git用户不允许登录shell,可以通过编辑/etc/passed文件完成,找到类似下面这一行:

    1 git:x:501:502::/home/git:/bin/bash

    改为:

    1 git:x:501:502::/home/git:/usr/bin/git-shell

    这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

    TortoiseGit 无需输入密码方法

    1、打开puttygen

    2、生成公钥和私钥

    点击save private key保存putty的私钥,putty的密钥的后缀名是ppk。 把公钥添加到.ssh/authorized_keys 

    注意: 
    公钥在authorized_keys的文件形式是一行一个公钥,否则该公钥不起作用。

    3、在tortoisegit上使用密钥

    这样就OK了!!

    使用TortoiseGit将文件提交至git服务器

    提交失败,报错了,原因是:Linux服务器上git的安装路径是/usr/local/git,不是默认路径。

    根据提示,在git服务器192.168.182.130上, 建立链接文件:

    1 ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack

    再次提交成功,如下图:

    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    exceljs的使用
    解决ios下的微信打开的页面背景音乐无法自动播放
    js 给定日期转为星期几
    获取地址栏参数
    解决浏览器缓存 或 刷新URL地址
    计算两个日期之间的天数
    获取当前日期的前后N天日期的方法
    将一下 prototype 是什么东西,原型链的理解,什么时候用 prototype
    apply和 call 什么含义,什么区别?什么时候用
    高效Web开发的10个jQuery代码片段
  • 原文地址:https://www.cnblogs.com/gtea/p/12714447.html
Copyright © 2011-2022 走看看