Linux系统搭建仅允许Git访问的服务器

一、安装Git[1]

sudo apt install git-all

二、开一个git账户(可选)

sudo adduser git
# sudo adduser git --uid 1001 --gid 1001
# sudo usermod -aG git git

UID和GID可以查看/etc/passwd/etc/group

三、限制git账户只能使用Git服务

1. 将登录启动shell设为git-shell

打开/etc/passwd,将登录启动shell改成git-shell[2]

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

或者运行[3]

chsh -s /usr/bin/git-shell

此时通过ssh登录git账户便会报错。

2. 设置禁止运行交互指令

如果存在~/git-shell-commands/no-interactive-login,则登录后会执行此脚本然后立刻退出[4],不再报错。

no-interactive-login
#!/bin/sh printf '\n' printf "Hi $USER! You've successfully authenticated, but you are \033[91mnot allowed \033[0mto use interactive shell access.\n" printf "\033[93mUse git services to login only.\033[0m\n" printf '\n' exit 128

其他用法详见参考资料[4]。

参考

  1. 1.5 Getting Started - Installing Git
  2. 搭建Git服务器 - 廖雪峰的官方网站
  3. Git - git-shell Documentation §EXAMPLES
  4. Git - git-shell Documentation §INTERACTIVE USE