zoukankan      html  css  js  c++  java
  • ubuntu 10.6 环境下git服务器的配置及问题的解决

    1.安装git :

    $sudo apt-get install git

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

    $sudo adduser git

    3.使用命令$sudo su git切换到git用户,进入git用户的主目录/home/git,则这个目录下创建.ssh文件,在这个目录中创建文件authorized_keys文件,用来保存需要登录的用户的公钥。

    目录的文件结构为:/home/git/.ssh/authorized_keys

    (注:此时要注意authorized_keys的所属的用户和组,使用ll命令查看,如果不是属于上例所创用户git,可使用chown更改,运行命令:#chown -R git:git authorized_keys)

    4.初始化Git仓库:

    先选定一个目录作为Git仓库,我的选择是在/home/git/创建目录srv(目录结构为/home/git/srv),然后在srv目录中输入命令:

    $sudo git init --bare sample.git

    注:在这个过程中,可能遇到问题"git is not in the sudoers file. This incident will be reported."其中git是你的用户名,也就是你的新建的用户名没有权限使用sudo,我们只要需改一下/etc/sudoers文件即可。

    首先要切换到root用户,使用命令$sudo su - (提示:注意su后面的 -),此时的效果是如root超级用户登录一样。

    切换到root超级用户后,此时请输入命令:$chmod u+w /etc/sudoers (给这个文件添加写权限)

    再次,使用vim命令打开/etc/sudoers文件,然后在内容中添加语句:git ALL=(ALL) ALL

    效果如图(git是新添加的用户名):

    编辑后退出,然后使用命令将文件的写权限去除:

    $chmod u-w /etc/sudoers

    5.Git就会创建一个裸仓库,该仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去更改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:

    $sudo chown -R git:git sample.git

    6.克隆远程库:

    在实体主机(去别虚拟机)的桌面上运行git客户端,运行命令:

    $git clone git@ip地址:sample的绝对地址

    例如:

    初次运行时,可能出现如下的选择,输入yes即可。

    此时,c:Users用户名.ssh下会多出一个文件known_hosts,以后在这台电脑上再次连接目标Git服务器时不会再提示上面的语句。

    7.客户端创建SSH公钥和密钥

    运行命令:$ssh-keygen -t rsa -C "邮件地址"

    在目录:~/.ssh(即C:Users用户名.ssh)中可以看到生成的两个文件:id_rsa 和 id_rsa.pub

    其中id_rsa是私钥,id_rsa.pub是公钥

    8.在服务器端Git打开RSA认证

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

    RSAAuthentication yes

    PubkeyAuthentication yes

    AuthorizedKeysFile %h/.ssh/authorized_keys

    例如:

    改为:

    然后再重新启动sshd服务:

    # /etc/init.d/ssh restart

    返回数据:

    9. 将客户端公钥导入到服务器端/home/git/.ssh/authorized_keys文件

    登录到git bash,导入keys文件:

    $ssh git@IP地址 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

    如图:

    此时可查看在服务器上的authorized_keys中是否出现了id_rsa.pub中的内容。

    重要:

    修改.ssh的目录权限为700

    修改.ssh/authorized_keys文件的权限为600

    运行命令:

    #chmod 700 .ssh

    #chmod 600 .ssh/authorized_keys

    运行结果如下:

    10. 客户端此时可使用git clone克隆远程仓库。

    11.禁止git用户ssh登录服务器

    之前在服务器端创建的git用户不允许ssh登录服务器

    编辑/etc/passwd

    找到:

    git:x:1001:1001:,,,:/home/git:/bin/bash

    修改为:

    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

    此时git用户可以正常通过ssh使用git,但无法通过ssh登录系统。

    12.配置完成后,在windows客户端使用git bash工具一系列命令即可实现类github的上传和下载:

    $git config --global user.email "邮件地址"

    $git config --global user.name "用户名(如此文中的git用户)"

    $git remote add origin git@IP地址:远程库的绝对地址(/home/git/srv/sample.git)

    $git add .

    $git push -u origin master (注:若出现问题可以先pull一下:$git pull origin master)

    13.注意:

    当使用git status命令时,若出现下面的提示:

    即执行git rm命令即可。

    例如上例中的那样:(test1.txt为新添加的文件)

    #git rm --cached test1.txt 

  • 相关阅读:
    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
    jQuery UI组件库Kendo UI使用技巧小分享
    Kendo UI ListView模板功能,让Web开发更轻松
    UI组件套包DevExpress ASP.NET Core v20.2新版亮点:全新的查询生成器
    Devexpress WinForms最新版开发.NET环境配置Visual Studo和SQL Server对应版本
    全新的桌面应用数据可视化呈现方式,Sankey Diagram控件你了解多少?
    java中的递归方法
    连接数据库查询 将查询结果写入exce文件中
    java连接mysql数据查询数据
  • 原文地址:https://www.cnblogs.com/zhushunli/p/6568025.html
Copyright © 2011-2022 走看看