搭建私人对外git空间

发布于:2025-03-31 ⋅ 阅读:(22) ⋅ 点赞:(0)

# 创建用户,指定不可登录的 Shell(git-shell 或 /usr/sbin/nologin)
sudo adduser --system --shell /usr/bin/git-shell --group git

# 验证用户配置
grep git /etc/passwd
# 预期输出:git:x:998:998::/home/git:/usr/bin/git-shell   //一定要是git-shell,不要xx-shell,这个是安装git后生成的git-shell bin,和用户没有关系。

# 删除用户
sudo deluser test

# 创建仓库目录(例如:test.git)
sudo -u test mkdir -p /home/test/test.git
cd /home/test/repos/test.git

# 初始化裸仓库(无工作区)

sudo -u test  git init --bare

# 修复权限(确保 git 用户拥有所有权)
sudo -u test chown -R test:test  /home/test

禁用密码登录(增强安全性)
sudo nano /etc/ssh/sshd_config

所有用户的配制

PasswordAuthentication no   //禁用密码登录
PubkeyAuthentication yes     //使用pubkey密钥登录

Match User root    //单独配制root用户,也可能配制其他用户test等等,空格分开或者另外再写一个配制(Match User xxx)
    PasswordAuthentication yes   # 允许 密码登录
    PubkeyAuthentication no        # 禁用密钥认证

PasswordAuthentication (系统登录密码,不是ssh密码)
设置成no,就是禁用操作系统密码登录,不是ssh设置的密码,
设置成yes   就要输入系统登录密码,如果没有设置密码将无法进入系统

PubkeyAuthentication     (是ssh密码,不是系统密码)
设置成no,ssh连接时不需要验证
设置成yes   ssh连接需要验证密码,如果把本地的id_rsa.pub,添加到服务器.ssh/authorized_keys中也不要输入ssh密码

两都都为yes就没法能过shell和ssh进入,前都为系统用户级密码,后者是ssh密钥密码

# 添加ssh密钥实现免密git pull
sudo -u test mkdir -p /home/test/.ssh
sudo -u test touch /home/test/.ssh/authorized_keys

sudo -u test chmod 700 /home/test/.ssh
sudo -u test chmod 644 /home/test/.ssh/authorized_keys

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --list   //查看设置是不是成功

生成ssh密钥

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" [-f ~/.ssh/your_custom_name] -f这个是可选

本地id_rsa.pub添加到服务器.ssh/authorized_keys中
 

----------------------------------------------------测试ssh 有没有通debug抓日志
# 服务器抓日志
sudo tail -f /var/log/auth.log  # 实时监控认证日志(Debian/Ubuntu)

本地抓日志
# 使用详细日志测试连接
ssh -Tv test@ip