主页
文章
分类
系列
标签
Git 服务器安装
发布于: 2016-5-26   更新于: 2016-5-26   收录于: Tool , Cheat sheet
文章字数: 907   阅读时间: 2 分钟  

安装 git

1
apt-get install git

创建 git 专用用户

  1. 创建用户 git (如果希望多个账户密码可以添加一个组,然后再创建不同的用户)
1
adduser git
  1. 添加用户认证文件
1
2
3
4
cd /home/git
mkdir .ssh
cd .ssh
vim authorized_keys
  1. 禁用 shell 登录 出于安全考虑,git 用户不允许登录 shell,通过编辑 /etc/passwd 文件完成
1
2
3
git: x:1002:1003:,,,:/home/git:/bin/bash
git: x:1002:1003:,,,:/home/git:/usr/bin/git-shell	#修改后
# (删除空格)

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

初始化 git 仓库

1
2
3
cd /data/Git
git init --bare ajcalc.git                # Git 会创建一个裸仓(--bare),裸仓只有配置信息,没有具体代码
chown -R git:git ajcalc.git               # 把 owner 改为 git

生成 SSH 公钥

创建公钥

由于 git 服务器可以使用 SSH 公钥进行认证,可以在客户端需要生成私钥和公钥,然后把公钥放到 git 服务器的 authorized_keys 文件即可,Windows 下打开 Git Bash,Linux 下直接执行命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen -t rsa -C "andyqiuchao@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/user/.ssh/id_rsa): /c/Users/user/.ssh/id_rsa_gz
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/user/.ssh/id_rsa_gz.
Your public key has been saved in /c/Users/user/.ssh/id_rsa_gz.pub.
The key fingerprint is:
SHA256:a4o6p7l98RlYrcQYG7KGtn8q/sghZ1+7qF1b2593OiE andyqiuchao@gmail.com
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|    . o          |
|   . o * .       |
|  o o o + .      |
| . o   +S.       |
|  .   o o.  E .  |
|. +.  oo+o   . . |
| =oBo=o*oo   .o .|
| .XXO+=.. ..o..+ |
+----[SHA256]-----+

服务器添加公钥

执行完上面命令后会在 C:\Users\user\.ssh 目录下生成对应的私钥和公钥,将 .ssh 文件夹里面的 id_rsa_gz.pub 里面的内容追加到服务器的 /home/git/.ssh/authorized_keys 文件里,把本地的 id_rsa_gz.pub 拷贝到 /home/git/.ssh 相同目录下,如果有多个不同的用户收集公钥往里面添加一行即可

1
cat id_rsa_gz.pub >> authorized_keys

测试 ssh 秘钥是否生效

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ ssh -T git@andyqiu.cn -i /c/Users/user/.ssh/id_rsa_gz
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-126-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage

System information as of Thu 15 Dec 2022 11:14:09 AM CST

System load:  0.11               Processes:             131
Usage of /:   12.4% of 54.03GB   Users logged in:       1
Memory usage: 45%                IPv4 address for eth0: 172.16.0.14
Swap usage:   0%

* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
 just raised the bar for easy, resilient and secure K8s cluster deployment.

 https://ubuntu.com/engage/secure-kubernetes-at-the-edge
New release '22.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

因为系统默认只读取 id_rsa,为了让 ssh 识别新的私钥,可以使用 ssh-agent 手动添加私钥(该方法仅限当前窗口有效,打开新的窗口则 ssh 连接失败)

1
2
ssh-agent bash
ssh-add ~/.ssh/id_rsa2

方法二、在 .ssh 目录下创建一个 config 文本文件,每个账号配置一个 Host 节点

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Host Git
	AddKeysToAgent yes
	HostName andyqiu.cn
	User Andy
	IdentityFile C:\Users\user\.ssh\id_rsa_gz

Host Github
	AddKeysToAgent yes
	HostName github.com
	User qiucha
	IdentityFile C:\Users\user\.ssh\id_rsa_github

克隆服务器代码

1
git clone git@andyqiu.cn:/data/Git/ajcalc.git	# 前面的 git 就是创建的 git 用户

如果 authorized_keys 文件中没有添加该用户的 id_ras.pub 公钥,则会显示输入密码,即通过密码的验证方式克隆仓库(git 用户的密码)

Andy
Welcome to andy blog
目录
相关文章
Git
配置 1 2 3 git config --global "Your Name" git config --global "Email Address" git config --global credential.helper store #保存密码(每次要输密码/重复输密码) 初始化 1 git init 提交修改 1
2016-5-27
Core Dump
Core Dump 设置 生成 core 默认是不会产生 core 文件的 1 ulimit -c unlimited # -c 指定 core 文件的大小,unlimited 表示不限制 core 文件
2017-12-21
GDB
帮助信息 1 2 3 4 5 6 7 help # 列出命令分类 help running # 查看某个类别的帮助信息 help run # 查看命令 run 的帮助 help info # 列出查
2017-12-10
Vim
光标移动 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
2016-3-2
JavaScript
基础知识 类型 基本类型 最新的 ECMAScript 标准定义了 8 种数据类型,分别是 string number bigint boolean null undefined symbol (ECMAScript 2016新增) 所有基本类型
2016-2-26
Go
安装 前往 官网 下载 go1.19.4.linux-amd64.tar.gz 1 2 3 tar -C /usr/local/ -xzf go1.19.4.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin go version 看到版本号代表 go 安装成功 编译器命令 1 2 3 4 5 6 7 8 9 10 11 12
2019-12-30
Redis
启动 Redis 1 2 3 4 redis-server /path/redis.conf # 指定配置文件启动 redis redis-cli # 开启 redis 客户端 systemctl restart redis.service # 重启 redis systemctl status redis # 检查 redis 运行状态 字符串 1 2
2019-12-24
C#
数据类型 类型 大小 举例 String 2 bytes/char s = “reference” bool 1 byte b = true char 2 bytes ch = ‘a’ byte 1 byte b = 0x78 short 2 bytes val = 70 int 4 bytes val = 700 long 8 bytes val
2019-7-13
Python
常规 Python 对大小写敏感 Python 的索引从 0 开始 Python 使用空白符(制表符或空格)来缩进代码,而不是使用花括号 帮助 获取主
2018-10-6
Nginx
Nginx 常用命令 官方文档 1 2 3 4 5 sudo nginx -t # 检测配置文件是否有错误 sudo systemctl status nginx # nginx 当前的运行状态 sudo systemctl reload nginx # 重新加
2018-2-12