• 搭建 Git 服务器(Ubuntu 系统)


    1. 安装 Git

    sudo apt-get install git

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

    sudo adduser git

    3. 创建证书登录(可选:这一步的作用是进行相关操作时,免输密码)

      ssh key 的基本原理是:在你本机上创建两个 key 文件,一个是私钥,一个是公钥,私钥放在本地,公钥放在远程服务器。当你通过 ssh key 登录到远程服务器时,

      远程服务器使用公钥创建一个加密的随机消息,然后发送到本地机器,本地机器使用私钥解密消息,发送解密的消息到远程服务器。远程服务器验证这个解密后的消息,然后授权访问。

      实际过程比这个复杂,但我们这里理解大概就可以了。具体操作如下(Windows 下操作相同,命令可在 Git Bash 中执行):

     (1) 生成 ssh 密钥

    • 查看是否已经有 ssh 密钥(如果没有密钥则不会有此文件夹,有则备份删除)
      cd ~/.ssh
      mkdir
      ~/.ssh
    • 生成 ssh 密钥
      ssh-keygen -t rsa

      按 3 个回车,密码为空。最后得到了两个文件:~/.ssh/id_rsa.pub(公钥)和 ~/.ssh/id_rsa(私钥)

     (2) 将公钥文件内容加到服务器 ~/.ssh/authorized_keys 文件中

    • 拷贝公钥文件到服务器
      scp ~/.ssh/id_rsa.pub git@58.241.22.107: 

       注 1:上述 scp 命令末尾有一个冒号

         注 2: 58.241.22.107 为服务器 IP 地址,拷贝后的文件路径是 /home/git/id_rsa.pub。

    • 切换到 git 用户,检查 ~/.ssh 目录是否存在,不存在则创建它,并创建 ~/.ssh/authorized_keys 文件
      su git
      cd
      ~/.ssh
      mkdir
      ~/.ssh touch ~/.ssh/authorized_keys
    • 拷贝公钥内容到 ~/.ssh/authorized_keys 文件中
      cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
      rm ~/id_rsa.pub

     (3) 修改相关目录权限

    • 只允许 git 用户访问
      chown -R git:git ~/.ssh
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys

    4. 初始化 Git 仓库

    • 切换到 Git 仓库的存放目录
      cd ~/
      mkdir GitRepository
      cd GitRepository
    • 创建 git 存储库,并设置相关权限(若 git 用户执行不了 sudo 命令,解决方法见文末参考1)
      sudo git init --bare xxx.git
      sudo chown -R git:git xxx.git

    执行完该命令 Git 就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的 Git 仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区。

    此外,服务器上的 Git 仓库通常都以 .git 结尾。

    • 退出 git 用户
      exit

    5. 禁用 shell 登录(可选)

    出于安全考虑,第 2 步创建的 git 用户不允许登录 shell,这可以通过编辑 /etc/passwd 文件完成

        sudo vim /etc/passwd

    找到类似下面的一行:

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

    改为:

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

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

    注:若没有该文件的写权限,可执行以下命令更改

        sudo chmod 666 /etc/passwd

    6. 克隆远程仓库

      通过 git clone 命令克隆远程仓库:

      git clone git@服务器 IP 地址:仓库地址/xxx.git

      注1:示例 git clone git@58.241.22.107:/home/git/GitRepository/VerifyPlatform_Cmd.git

      注2:运行 git clone 时,如果报 sign_and_send_pubkey: signing failed: agent refused operation,则运行下以下命令

       eval "$(ssh-agent -s)"
       ssh-add

        

    参考1:Ubuntu 报 "xxx is not in the sudoers file.This incident will be reported" 错误解决方法

    参考2:搭建 Git 服务器-廖雪峰的官方网站

      

  • 相关阅读:
    js 实现自增长
    常用的js脚本验证
    Jquery 收集
    Jquery 常用操作搜集
    Jquery 点击绑定行 弹出详细页面
    Jquery 了解
    Html 标尺
    Editor Guidelines
    程序员需要做到
    jS 回车事件
  • 原文地址:https://www.cnblogs.com/dhqy/p/12575244.html
Copyright © 2020-2023  润新知