Ответ 1
Да, назначьте git shell
в качестве оболочки входа для всех пользователей, у которых должен быть доступ только git.
Можно ли запустить сервер git через ssh, используя authorized_keys
и command=
, чтобы ограничить доступ только к репозиториям git, не используя gitosis/gitolite?
Да, назначьте git shell
в качестве оболочки входа для всех пользователей, у которых должен быть доступ только git.
РЕДАКТИРОВАТЬ: Не уверен во всех неожиданных отрицательных рейтингах; Я, очевидно, не говорю, чтобы использовать Gitolite, поскольку OP специально просил не использовать его. Я просто заявляю, что то, о чем он просит, составляет 95% того, что делает крошечный исходный код Gitolite, и поэтому я рассказываю ему, где в нем источник, он может найти фрагмент, который он захочет скопировать, чтобы перевернуть его.
Да, гитолит делает именно это. Он также не заменяет оболочку пользователя.
cat ~/.ssh/authorized_keys
command="/home/git/.gitolite/src/gl-auth-command jbruce",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAD3NzaC1yc2EABBBCIwAAAQEAtRFmADxUSCX97CS/Uh7/N0y0vL...
Обратите внимание, что это не выглядит как обычный authorized_keys
на сервере, он также передает имя пользователя в качестве параметра, так что исполняемый script знает, к кому принадлежит этот ключ ssh. Дополнительное преимущество не переключать пользовательскую оболочку (при сохранении ее безопасности) заключается в том, что если вы попытаетесь выполнить ssh непосредственно в машине, это не только прекратит сеанс, но и сообщит вам, к каким репозиториям вы имеете доступ, прежде чем он завершится, если он знает кто ты.
Вы можете поместить это в начало каждой строки в authorized_keys2
:
no-port-forwarding,no-agent-forwarding,command="/usr/bin/git-shell -c \"$SSH_ORIGINAL_COMMAND\""
Это позволит использовать только команды git поверх ssh, но все равно позволит вам стать этим пользователем, если вам нужно возиться (из другой учетной записи):
sudo -u git -i