Я размещаю репозиторий git на моем сервере. Любой может нажать
/ pull
со следующего удаленного URL:
ssh://git@example.com/opt/git/my-project.git
В частности, любой, у кого есть доступ ssh
к (скрытому) пользователю, может нажимать / тянуть (т. Е. У меня их открытый ключ указан как authorized_key
)
Я бы хотел и дальше разрешать доступ push / pull, но я бы хотел отключить доступ к оболочке / логину
Github использует этот подход - если вы попытаетесь использовать ssh на любом из их серверов git, вы получите:
$ ssh git@github.com
PTY allocation request failed on channel 0
Hi [USER]! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
В частности, я бы хотел -
git
root
) иметь возможность интерактивно принимать пользователя git
нажать
/ pull
на репозиторий Я попытался отключить оболочку для пользователя git
следующим образом:
root@example:~# usermod -s /usr/sbin/nologin git
Это отлично работает для №1 (доступ ssh
заблокирован) и №2 (я могу по-прежнему получить доступ к оболочке с помощью sudo -u git -s / bin / bash
)
Однако №3 не может быть выполнен. Отключение доступа к оболочке, по-видимому, также отключает доступ push
/ pull
(поскольку он, вероятно, использует ssh
).
Есть ли здесь другое решение? Как сам Github это делает?
Спасибо!
Самым простым решением было бы использовать git-shell в качестве оболочки для входа пользователя.
Подробное описание того, как это настроить, можно найти здесь: https: // git-scm. com / docs / git-shell или, альтернативно, на странице руководства оболочки git man git shell
В файле authorized_keys вы можете добавить параметры / ограничения к тому, что разрешено при аутентификации с определенной парой ключей.
Добавьте ограничения: no-port-forwarding, no-X11-forwarding, no-agent-forwarding, no-pty
См. Описание формата файла authorized_keys в https: //www.freebsd .org / cgi / man.cgi? sshd (8) по их значению
cat ~/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB... comment
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDE... other comment
Вы можете добавить аналогичные ограничения для учетной записи git, установив их в блоке "match user" в файле sshd_config:
### add this to the bottom of the sshd_config
Match User git
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no