Сначала я объясню мои настройки. Я работаю в системе, не являющейся самоуправляемой, в которой у меня есть учетная запись без прав root/ повышенных прав. В этой системе я хочу поделиться несколькими репозиториями git для разных групп людей. Действия, предпринятые для реализации общего репозитория git, приведены ниже. Я разделил их по командам, выполняемым в терминале bash в системе REMOTE и LOCAL. ps: заменить любые переменные, окруженные разделителями <и>, соответствующими значениями.
----------- УДАЛЕНО (моя система): -----------
bash-4.2> mkdir -p <path>/<to>/project.git
bash-4.2> cd <path>/<to>/project.git
bash-4.2> git init --bare
bash-4.2> ssh-keygen -t rsa -f ~/.ssh/gitkey_rsa -N <password>
bash-4.2> echo "command=\"git-shell -c \\\"\$SSH_ORIGINAL_COMMAND\\\"\",
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty \
$(cat ~/.ssh/gitkey_rsa.pub)" >> ~/.ssh/authorized_keys
Эти команды делают следующее:
- создать репозиторий git
- генерировать ключ ssh
- добавить ключ для авторизованных ключей с предварительно установленными ограничениями
----------- МЕСТНЫЙ (другие пользователи) -----------
bash-4.2> mv <path>/<to>/gitkey_rsa ~/.ssh
bash-4.2> echo -e "Host gitserver\n\
\tHostName <remote server>\n\
\tUser <remote user>\n\
\tIdentityFile ~/.ssh/gitkey_rsa" >> ~/.ssh/config
bash-4.2> git clone gitserver:/home/<remote user>/<path>/<to>/project.git
Эти команды делают следующее:
- поместите ключ rsa в каталог ~/.ssh
- добавить правило в ~/.ssh/config, указав имя хоста 'gitserver' с ключом
- получить содержимое хранилища
Используемые команды основаны на ограничении доступа только к git. Используя ограниченный ключ, пользователю разрешено выполнять только команды git. Проблема в том, что пользователю также разрешен доступ к каждому git-репозиторию в удаленной системе. Я хотел бы ограничить доступ только к одному хранилищу для каждого ключа ssh. Другими словами, я бы хотел ограничить доступ к одной папке, содержащей репозиторий git, через ограничения по ключу ssh.
Решения, которые я нашел до сих пор: доступ только к определенным каталогам через ssh и ограничение доступа пользователя SSH к одной папке. Они либо хотят, чтобы вы установили (S)FTP-сервер, WebDAV, либо создали нового пользователя с ограниченными правами. Это не то, что я ищу, так как для этого требуются права суперпользователя. Из-за того, что команды могут быть ограничены с помощью ключей ssh, разве нет способа ограничить права доступа?
С уважением