git服务器技术总结终极版

来源:互联网 发布:C语言编程输出声音 编辑:程序博客网 时间:2024/06/06 01:24

服务器端
①新建一个git用户
useradd -g(所属组) git -d(自定义用户文件目录 默认在/home里) /home/git git(用户名)
(设置所属组的时候建议先建立用户组 groupadd git)
②检查/etc/passwd文件
一般为git:x:501:500::/home/git:/bin/bash
其中501为用户编号 500为组编号 一定要保证一一对应 如果对组编号有疑问
可以执行cat /etc/group检查组编号
③修改passwd文件 阻止git用户shell登录(使git用户不能使用ssh登录到服务器
只能使用git-shell进行操作)
将git:x:501:500::/home/git:/bin/bash修改为
git:x:501:500::/home/git:/usr/bin/git-shell
(注:(非常重要!!!已经在这个问题上纠结了好几天)一定要确保git-shell文件存在于/usr/bin目录里 如果不存在 可以使用
which git-shell命令查找git-shell所在的位置 然后复制到/usr/bin/ 目录里即可)
④(重要!!!)修改用户文件夹的权限和增加authorized_keys(公钥文件)
在第①步的时候指定了用户文件夹(/home/git),移动到/home位置 然后用ll(LL 不是11)命令查看git文件夹
drwx—— 3 git git 4096 Sep 11 14:44 git
其中 drwx—— 代表的是文件夹权限 也就是700 第一个git代表的是用户,第二个代表的是组,第三
个代表的是文件夹(用户名和组名一定要对应 如果是不对应的话可以输入chmod -R git:git git)
接着cd git进入git目录 然后mkdir .ssh(一般没有这个文件 所以得新建) 并且设置它的权限为
700(chmod 700 .ssh)然后在cd进入.ssh目录 建立auth文件(touch authorized_keys)并且设置它
的权限为644(设置权限的时候一定要用ll(LL 不是11)检查一下权限是否属于相应的用户和组)
(重要一步!!! 将git用户在git-bash中生成的ssh_key(这个操作在客户端会讲到)复制粘贴到服务器新建的authorized_keys中)
⑤修改ssh配置文件 vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
找到这三个配置选项 按上面修改 如果有#注释就去掉 总之改这三个就行了
改完之后保存 重启ssh服务(service sshd restart)
⑥重启完之后 找个位置去建你的git库
先新建个文件 比如我在/data中建了个文件夹git(mkdir git)
cd到git文件夹中 接着建一个空白库-> git init –bare example.git(注:名字自定义但是后缀建议写为.git)
接着ll 就会发现生成一个.git为后缀的文件夹 不要着急进去 我们直接更改它的权限
chown -R git:git example.git(先把这个库的权限赋予你要指定的git用户,如果你想设置多个库,自己使用chmod设置
权限即可,这里不再赘述)
好了,服务器端就到这里告一段落了 接着我们去看客户端操作
客户端
①安装git客户端
git客户端在windows上也很常用 可以百度下载客户端 安装
②配置git客户端
说的是配置 但是其实也是几步简单的操作
第一步 安装好git后点击鼠标右键就会发现右键菜单多了两个选项 一项是git GUI here 另一个是git Bash here 这里我们主要
用的是git bash here,在主机上选择(或者新建)你要存放库的文件夹,打开文件夹鼠标右键点击git bash here,接着就会弹出
一个类似于命令提示符的框
第二步 生成ssh_key(重要!!!!!!)
接着我们在命令框中输入ssh-keygen -t rsa -C “xxx@xxx.com(你自定义邮箱)” 接着一路回车
就会在本机生成你的专属ssh_key 一般存放目录在~/.ssh/中(注:~在linux中代表的是家目录,在windows中一般在c:\用户(users)\
Administrator\),找到你的.ssh文件夹点进去 打开id_rsa.pub文件 把里面的公钥复制粘贴到服务器对应用户的.ssh/authorized_keys中
第三步 直接操作
添加远程库 git remote add git(你在服务器新建的git用户名)@你的服务端ip地址:/data/git/example.git(你的git库绝对路径)
接着git remote -v查看远程库是否建立成功(报错的话 ssh git@ip -vv 查看连接log 找寻问题所在)
第四步 进行clone操作
连接ok后 可以把远程的库克隆到本地(如果提示You appear to have cloned an empty repository不要慌张 这是因为你的库里没东西,随便
touch点儿什么push上去就行了 具体操作很简单 百度一下你就知道)
最后:问题总结
因为前几天一直纠结总是提示输入用户密码的问题,搞得我头疼。今天google的时候突发奇想,因为自己有两台服务器,一台公司的,一台是自己
的,这几天一直在自己的服务器上折腾,针对每次clone或push都要密码的问题想认真地总结一下
①一定要检查用户权限!!!一定要检查用户权限!!!一定要检查用户权限!!!
要记住 用户目录文件夹700 文件夹里的.ssh文件夹700 .ssh里面的authorized_keys文件一定要644
并且他们的权限归属一定要有相对应的用户和用户组(git:git)
②给git用户设置禁止shell登陆的时候一定要注意!!!!!!
git:x:501:500::/home/git:/usr/bin/git-shell
这个git-shell文件一定要存在 并且路径要设置正确(不一定非要/usr/bin中,只要找到git-shell对应的目录就行)
③检查/etc/ssh/sshd_config配置文件是否配置正确
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
这三项一定要配置好 配置完成后一定要记得重启ssh服务(service sshd restart)
④(待研究)git库也要配置好所属权限(chown -R命令操作git库文件夹,把它赋予给相应的git用户和组)

原创粉丝点击