zoukankan      html  css  js  c++  java
  • CentOS下搭建Git服务器(基于SSH协议)

    1,安装Git所需依赖包
         # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
         # yum install gcc perl-ExtUtils-MakeMaker
     
    2,卸载CentOS自带的git
         # yum remove git     
     
    3,下载较新Git版本
         # mkdir /usr/src/tools
         # cd /usr/src/tools
         # tar -zxvf git-2.8.3.tar
     
    4,安装Git并添加到环境变量中,Git安装路径为/usr/local/git
         # cd git-2.8.3.tar
         # make prefix=/usr/local/git all
         # make prefix=/usr/local/git install
         # echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
         # source /etc/bashrc
         
         完毕,查看git版本号
         # git --version 
     
    5,创建用户git,用来运行Git服务
         # adduser git
         # su git
         # cd ~
         # mkdir .ssh
         # touch authorized_keys
         在git用户的家目录(/home/git/)创建一个.ssh的目录,将协同工作人员的SSH公钥添加到该目录的authorized_keys文件中。
     
    6,收录客户端的SSH公钥到/home/git/.ssh/authorized_keys文件中
         客户端使用命令 ssh-keygen -t rsa -C "你的email地址" ,会在~/.ssh/id_rsa.pub生成SSH公钥,复制给管理员即可。 
     
    7,配置服务器端ssh服务
         # vim /etc/ssh/sshd_config
         RSAAuthentication yes
         PubkeyAuthentication yes
         AuthorizedKeysFile /home/git/.ssh/authorized_keys #你的authorized_keys所在路径
     
    8,初始化git仓库(裸库)
         # cd /home/git 
         # mkdir project.git
         # git init --bare project.git
     
    9,禁用git用户shell登录
         # vim /etc/passwd
         git:x:1001:1001:,,,:/home/git:/bin/bash
         改为
         git:x:1001:1001:,,,:/home/git:/usr/local/git/bin/git-shell
     
     
    现在客户端可以通过 git clone 命令克隆远程仓库了,注意这里有些问题需要注意,SSH对公钥,私钥的权限和所有权的要求是非常严格的,总结如下:
    1,下面两个目录的所有权必须是git(上面创建的git用户),所属组也应该是git,权限必须为700
         ①/home/git     # chmod 700 /home/git
         ②/home/git/.ssh     # chmod 700 /home/git/.ssh
    2,公钥文件的所有权必须是git,所属组也必须是git,权限必须是644
         ①/home/git/.ssh/authorized_keys #c hmod 644 /home/git/.ssh/authorized_keys
     
    如果权限不对,会造成不能正常登录,报错信息:Permission denied (publickey,gssapi-with-mic.....)
  • 相关阅读:
    python 包管理工具 pip 的配置
    Python 变量作用域 LEGB (下)—— Enclosing function locals
    Python 变量作用域 LEGB (上)—— Local,Global,Builtin
    2020 Java 面试题 小结 (答案慢慢补上,有错误请指出)
    mysql 根据日期(date)做年,月,日分组统计查询
    jvm指令
    正则表达式 分割地址 获取省市区详细地址
    .Net 异常记录
    WCF设计服务协议(一)
    plsql ORA-01789:查询块具有不正确的结果列数
  • 原文地址:https://www.cnblogs.com/startcaft/p/6693951.html
Copyright © 2011-2022 走看看