欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > SSH密钥认证 + 文件系统权限控制 + Git仓库配置

SSH密钥认证 + 文件系统权限控制 + Git仓库配置

2025/3/22 18:08:04 来源:https://blog.csdn.net/dinsh3100/article/details/146412897  浏览:    关键词:SSH密钥认证 + 文件系统权限控制 + Git仓库配置

在本地服务器上实现多个用户仅通过git push操作修改仓库、禁止其他改写方式的需求,可以通过以下步骤实现:

方法概述
通过SSH密钥认证 + 文件系统权限控制 + Git仓库配置,确保用户仅能通过git push命令提交修改,而无法通过直接操作服务器文件或其他方式修改仓库。以下是具体操作流程:

步骤 1:创建专用Git用户与裸仓库
1. 创建Git系统用户(用于管理仓库访问权限)

sudo adduser git  # 创建用户名为git的系统账户
sudo passwd git   # 设置密码(可选,后续用SSH密钥认证更安全)

2. 初始化裸仓库(无工作区,仅存储版本数据)

sudo su git  # 切换到git用户
mkdir -p /home/git/repos/project.git  # 创建仓库目录
cd /home/git/repos/project.git
git init --bare  # 初始化裸仓库

3. 设置目录权限(限制非Git用户访问)

sudo chown -R git:git /home/git/repos  # 确保git用户拥有仓库所有权
sudo chmod -R 750 /home/git/repos     # 仅允许git用户及其组读写

4. 手动添加.ssh文件夹和authorized_keys文件

# 在服务器上操作(以git用户身份)
mkdir -p /home/git/.ssh
touch /home/git/.ssh/authorized_keys
chmod 600 /home/git/.ssh/authorized_keys  # 设置权限

步骤 2:配置SSH密钥认证与命令限制
1. 用户生成SSH密钥对(每个用户本地操作)

ssh-keygen -t rsa -C "user@example.com"  # 本地生成密钥,默认保存到~/.ssh/

usr@example.com 可以自己定义:比如:dd@dd。

rsa的形式也可以换其他的编码方式。

2. 这个时候在用户的home下面有个/home/.ssh/会产生一个私钥和一个公钥。公钥的尾缀是.pub

打开公钥文件,复制公钥文件内的内容:

步骤3:使用git用户在git的authorized_keys文件中添加命令如下:

command="git-shell -c \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3NzaC... user@example.com

最后的部分ssh-rsa AAAAB3NzaC... user@example.com  替换为  之前公钥的部分。

步骤4:GIT客户端

1. 用户克隆仓库(使用SSH协议)

git clone git@yourserver:/home/git/repos/project.git

yourserver改为hostname

这其中需要输入git用户的密码

第一次时要选yes:

2. 正常进行用户提交与推送

git add .  # 添加文件到暂存区
git commit -m "Initial commit"
git push origin main  # 仅允许通过push操作修改仓库

这其中也会要求输入git用户的密码。如果使用smartgit,可以保存密码,这样每次就不用再输入密码了。

使用smartgit进行第一次push,会弹出对话框:

输入git用户密码,并保存。

选择不使用master password

选择accept。

然后就可以正常使用了。

PULL时,直接选PULL就行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词