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
  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/gtea/p/12714447.html
Copyright © 2011-2022 走看看