随笔 - 216  文章 - 0 评论 - 2 阅读 - 24万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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 服务器-廖雪峰的官方网站

 

  

 

posted on   青叶煮酒  阅读(505)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示