在 Linux 下搭建 Git 服务器

在 Linux 下搭建 Git 服务器

https://mp.weixin.qq.com/s/05KzYi7w2QDGu9t4KSZNHQ

在 Linux 下搭建 Git 服务器

环境:服务器 CentOS6.6 + git(version 1.7.1)
客户端 Windows10 + git(version 2.8.4.windows.1)

① 安装 Git

Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git

服务器端:

#yum install -y git

安装完后,查看 Git 版本

[root@localhost ~]# git --version git version 1.7.1

 

客户端:

下载 Git for Windows,地址:https://git-for-windows.github.io/

安装完之后,可以使用 Git Bash 作为命令行客户端。

安装完之后,查看 Git 版本

$ git --version git version 2.8.4.windows.1

 

② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

[root@localhost home]# id git
id: git:无此用户
[root@localhost home]# useradd git
[root@localhost home]# passwd git

 

③ 服务器端创建 Git 仓库

设置 /home/data/git/gittest.git 为 Git 仓库

然后把 Git 仓库的 owner 修改为 git

[root@localhost home]# mkdir -p data/git/gittest.git [root@localhost home]# git init --bare data/git/gittest.git Initialized empty Git repository in /home/data/git/gittest.git/[root@localhost home]# cd data/git/[root@localhost git]# chown -R git:git gittest.git/

 

④ 客户端 clone 远程仓库

进入 Git Bash 命令行客户端,创建项目地址(设置在 d:/wamp64/www/gittest_gitbash)并进入:

dee@Lenovo-PC MINGW64 /d $ cd wamp64/www dee@Lenovo-PC MINGW64 /d/wamp64/www $ mkdir gittest_gitbash dee@Lenovo-PC MINGW64 /d/wamp64/www $ cd gittest_gitbash dee@Lenovo-PC MINGW64 /d/wamp64/www/gittest_gitbash $

 

然后从 Linux Git 服务器上 clone 项目:

$ git clone git@192.168.56.101:/home/data/gittest.git

如果SSH用的不是默认的22端口,则需要使用以下的命令(假设SSH端口号是7700):

$ git clone ssh://git@192.168.56.101:7700/home/data/gittest.git

 

在 Linux 下搭建 Git 服务器

当第一次连接到目标 Git 服务器时会得到一个提示:

The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.RSA key fingerprint is SHA256:Ve6WV/SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ. Are you sure you want to continue connecting (yes/no)? 

选择 yes:

Warning: Permanently added '192.168.56.101' (RSA) to the list of known hosts.

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

在 Linux 下搭建 Git 服务器

后面提示要输入密码,可以采用 SSH 公钥来进行验证。

 

⑤ 客户端创建 SSH 公钥和私钥

$ ssh-keygen -t rsa -C "472323087@qq.com"

在 Linux 下搭建 Git 服务器

此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub

id_rsa 是私钥

id_rsa.pub 是公钥

在 Linux 下搭建 Git 服务器

 

⑥ 服务器端 Git 打开 RSA 认证

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

RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys

保存并重启 sshd 服务:

[root@localhost ssh]# /etc/rc.d/init.d/sshd restart

或者:service sshd restart

/bin/systemctl restart sshd.service

 

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

在 /home/git/ 下创建目录 .ssh

[root@localhost git]# pwd/home/git
[root@localhost git]# mkdir .ssh
[root@localhost git]# ls -a
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh

然后把 .ssh 文件夹的 owner 修改为 git

 

[root@localhost git]# chown -R git:git .ssh [root@localhost git]# ll -a 总用量 32drwx------. 5 git  git  4096 8月  28 20:04 . drwxr-xr-x. 8 root root 4096 8月  28 19:32 ..-rw-r--r--. 1 git  git    18 10月 16 2014 .bash_logout-rw-r--r--. 1 git  git   176 10月 16 2014 .bash_profile-rw-r--r--. 1 git  git   124 10月 16 2014 .bashrc drwxr-xr-x. 2 git  git  4096 11月 12 2010 .gnome2 drwxr-xr-x. 4 git  git  4096 5月   8 12:22 .mozilla drwxr-xr-x. 2 git  git  4096 8月  28 20:08 .ssh

 

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

回到 Git Bash 下,导入文件:

$ ssh git@192.168.56.101 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

需要输入服务器端 git 用户的密码

在 Linux 下搭建 Git 服务器

 

回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:

[root@localhost git]# cd .ssh [root@localhost .ssh]# ll 总用量 4-rw-rw-r--. 1 git git 398 8月  28 20:08 authorized_keys

可以查看一下是否是客户端生成的公钥。

 

重要:

修改 .ssh 目录的权限为 700

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

[root@localhost git]# chmod 700 .ssh [root@localhost git]# cd .ssh [root@localhost .ssh]# chmod 600 authorized_keys 

 

⑧ 客户端再次 clone 远程仓库

$ git clone git@192.168.56.101:/home/data/git/gittest.git

在 Linux 下搭建 Git 服务器

 

查看客户端项目目录:

在 Linux 下搭建 Git 服务器

 

项目已经 clone 了。

也可以使用 tortoiseGit 客户端来管理项目:

在 Linux 下搭建 Git 服务器

clone

在 Linux 下搭建 Git 服务器

 

⑨ 禁止 git 用户 ssh 登录服务器

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

编辑 /etc/passwd

找到:

git:x:502:504::/home/git:/bin/bash

修改为

git:x:502:504::/home/git:/bin/git-shell

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113180.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows系统如何cmd查看端口被占用、杀进程「建议收藏」

    windows系统如何cmd查看端口被占用、杀进程「建议收藏」首先是启动windows的命令窗口,按键盘上的windows+R,然后在输入框中输入cmd,既可以启动命令窗口 进入windows命令窗口之后,输入命令,输入netstat-ano然后回车,就可以看到系统当前所有的端口使用情况。 通过命令查找某一特定端口,在命令窗口中输入命令中输入netstat-ano|findstr”端口号”,然后回车就可以看到这个端口被哪个应用占用。 查看到对应的进程id之后,就可以通过id查找对应的进程名称,使用命令tasklist|findstr”进程id..

    2022年5月18日
    47
  • outputstream转byte数组_byte数组写入文件

    outputstream转byte数组_byte数组写入文件将inputstream转化为数组byte[]

    2022年9月21日
    2
  • nginx版本如何选择?

    nginx版本如何选择?

    2021年10月8日
    59
  • nginx配置ssl证书实现https访问_ssl证书有效期

    nginx配置ssl证书实现https访问_ssl证书有效期1,登录阿里云,工作台找SSL证书或者安全下找CA证书2,点击创建证书(或购买证书),创建好以后点击证书申请、3,设置配置以及域名信息,仅填写圈住内容,其他默认即可4,随后等待一会,查看状态,是否为 已签发5,为已签发时,点击下载选择下载类型6,下载后解压文件7,上传至服务器,存放位置,先找到nginx所在位置 “/nginx/conf/”找到该位置创建“cert”把刚才解压的两个文件存放至此。8,开始nginx配置内容`server { #SSL 访问端口号为 443 li

    2022年8月19日
    9
  • 理解ABA问题_什么叫ABA

    理解ABA问题_什么叫ABA理解ABA问题1ABA问题的产生2原子引用AtomicReference3带时间戳的原子引用AtomicStampedReference解决ABA问题1ABA问题的产生所谓ABA问题,就是比较并交换的循环,存在一个时间差,而这个时间差可能带来意想不到的问题。比如线程1和线程2同时也从内存取出A,线程T1将值从A改为B,然后又从B改为A。线程T2看到的最终值还是A,经过与预估值的比较,二者相等,可以更新,此时尽管线程T2的CAS操作成功,但不代表就没有问题。有的需求,比如CAS,只注重头

    2025年6月8日
    3
  • matlab 插值出错,MATLAB插值问题

    matlab 插值出错,MATLAB插值问题一、一元函数插值已知函数y=f(x)在区间[a,b]上的n+1个不同点的函数值为,若存在一个简单函数F(x),使,称F(x)为f(x)在区间[a,b]上的插值函数,称(xi,yi)为插值节点。若F(x)为多项式,称为多项式插值(或代数插值);常用的代数插值方法有:拉格朗日插值,牛顿插值。n次代数插值:已知f(x)在n+1个点x0,x1,…,xn处的函数值为y0,y1,…,yn,求一个n…

    2022年6月4日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号