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 

原文地址:https://www.cnblogs.com/zhushunli/p/6568025.html