Запускать «безопасный» git-сервер через SSH без gitosis / gitolite? - PullRequest
13 голосов
/ 03 мая 2011

Можно ли запустить git-сервер через ssh, используя authorized_keys и command= для ограничения доступа только к git-репозиториям, без использования gitosis / gitolite?

Ответы [ 3 ]

12 голосов
/ 03 мая 2011

Да, присвойте git shell в качестве оболочки входа в систему для всех пользователей, которые имеют только git-доступ.

9 голосов
/ 03 мая 2011

РЕДАКТИРОВАТЬ: Не уверен во всех внезапных отрицательных рейтингах;Я, очевидно, не говорю, чтобы использовать 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, он также передает имя пользователя в качестве параметра, чтобы исполняемый скрипт зналкому принадлежит этот ключ sshДополнительным преимуществом не переключения пользовательской оболочки (при сохранении ее безопасности) является то, что если вы попытаетесь подключиться непосредственно к компьютеру по ssh, он не только завершит сеанс, но и сообщит вам, к каким репозиториям у вас есть доступ, прежде чем он завершит работу, если он знаеткто ты.

0 голосов
/ 13 апреля 2013

Вы можете поместить это в начале каждой строки в authorized_keys2:

no-port-forwarding,no-agent-forwarding,command="/usr/bin/git-shell -c \"$SSH_ORIGINAL_COMMAND\"" 

Это разрешит только команды git через ssh, но все равно позволит вам стать этим пользователем, если вам нужно возиться (из другой учетной записи):

sudo -u git -i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...