Linux系统,git服务器搭建

来源:互联网 发布:串口编程 编辑:程序博客网 时间:2024/04/20 17:39

本文介绍git服务器搭建,不介绍客户端git创建及文本提交,客户端git使用、ssh密钥生成可参考末尾相关链接

运行环境

服务器:Linux    ,客户端windows

IP:10.34.10.122   username:root,secret:password

1. 第一步,安装git

yum install git

2.  第二步,创建一个git用户,用来运行git服务

cd  homeadduser git

若要设置密码,则:passwd git,输入密码即可,我的密码是:abcd1234,可根据喜好设定

清除密码命令:passwd  -d  git  

3.  第三步,创建登录证书

ssh可同时支持publickey和password两种授权方式,publickey默认不开启。如果客户端不存在.ssh/id_rsa,则使用password授权,存在则使用publickey授权,如果publickey授权失败,依然会继续使用password授权。我们使用的是publickey授权方式,下面进行相关配置。

(1)收集所有需要登录用户的公钥,也就是id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件中,一行一个,如果没有.ssh目录,则创建目录。

mkdir .ssh

修改.ssh目录权限,权限必须为700

chmod 700 .sshchown -R git:git .ssh

公钥文件id_rsa.pub 上传至.ssh目录,执行命令,将公钥拷贝至authorized_keys文件。

 cat  id_rsa.pub  >>  authorized_keys

查看拷贝是否成功,不成功,重新拷贝。

cat  authorized_keys


 修改authorized_keys权限,权限必须为644

 chmod 644 authorized_keys

(2) sshd相关配置,不可省略,编辑ssh服务配置文件,所在位置为/etc/ssh/sshd_config

RSAAuthentication yes     #开启RSA认证功能PubkeyAuthentication yes  #开启公匙认证StricModes no             #据说不改会强制要求登录用户和文件拥有者用户相同

(3)sshd_config生效,重启sshd服务即可

service sshd restart

(4)如果要远程连接ssh ,需要把22端口的防火墙关闭,相关命令如下:

1) 重启后生效

开启:chkconfig iptables on关闭:chkconfig iptables off

2) 即时生效,重启后失效

开启:service iptables start关闭:service iptables stop

4.  第四步,初始化git仓库

makir /home/git/repo               #新建repo目录cd /home/git/repo                  #切换到repo目录git init  --bare  project.git      #初始化仓库chown -R  git:git  project.git     #修改权限,project.git所在用户和组设为git

5. 第五步,禁用shell

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

         git:x:1000:1000::/home/git:/bin/bash

改为

         git:x:1000:1000::/home/git:/usr/bin/git-shell

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


6.  第六步,克隆远程仓库

git  clone  git@10.34.10.122:/home/git/repo/project.git      (其中,10.34.10.122为hostname)

若克隆成功,会有类似下面的结果:

Cloning  into  'project' ...remote: Counting  object  : 8 , done.remote: Compressing  objects : 100% (5/5) , done.remote: Total 8  (delta  0) ,reused  0  (delta  0)Receiving  objects:100% (8/8), done.Checking  connectivity ...  done.



参考链接

(1)廖雪峰官方网站,git教程

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000

(2)Git项目管理——部署Git服务器

http://segmentfault.com/a/1190000000482168

(3)http://git-scm.com/


出现问题

问题1:Git error:“Please make sure you have the correct access rights and the repository exists”

解决问题链接:

http://stackoverflow.com/questions/25927914/git-error-please-make-sure-you-have-the-correct-access-rights-and-the-reposito

 

问题2:SSH关于公钥认证Permission denied(publickey,gssapi-with-mic的问题

SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:

1、下面两个目录的所有权必须是git,所属组也应该是git,权限必须为700

\home\git

\home\git\.ssh

2、下面公钥文件的所有权必须是git,所属组也应该是git,权限必须为644

\home\git\.ssh\authorized_keys

3、下面私钥文件的所有权必须是git,所属组也应该是git,权限必须是600,但我们的私钥在不需要上传至服务器,因此,忽略这一步

\home\git\.ssh\id_rsa


0 0
原创粉丝点击