Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.
Git по умолчанию использует 9418 порт, но для аутентификации используется ssh-ключ. Нужно ли на сервере открывать ssh-порт для git-запросов? Или запросы адресуются git'ом ssh уже после того, как их получил и обработал git?
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Нужно ли на сервере открывать ssh-порт для git-запросов?
вы точно не путаете ssl и ssh аутентификацию? Если git работает через ssh, то используется порт, прописанный в конфиге sshd_conf, по умолчанию 22, но его настоятельно рекомендуется изменить на $RANDOM. Никаких других портов в данном случае git использовать не может и не должен
Нужно ли на сервере открывать ssh-порт для git-запросов?
вы точно не путаете ssl и ssh аутентификацию? Если git работает через ssh, то используется порт, прописанный в конфиге sshd_conf, по умолчанию 22, но его настоятельно рекомендуется изменить на $RANDOM. Никаких других портов в данном случае git использовать не может и не должен
Ок, т.е. если я делаю git clone git@ip:/repo.git, то говорю с git-сервером по протоколу ssh.
Точняк, это же альтернативная запись git clone ssh://git@ip/repo.git. SSH-ключ лежит на сервере в /home/git/.ssh/authorized_keys.
Но мне не совсем понятно как происходит перенаправление от ssh к git. OpenSSH работает в данном случае по типу mail relay, т.е. расшифровывает сообщения и передает их дальше? А если git на сервере выключить, то от ssh я получу ОК (процесс аутентификации), а потом ошибку о том, что git на сервере не найден?
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
А если git на сервере выключить, то от ssh я получу ОК (процесс аутентификации), а потом ошибку о том, что git на сервере не найден?
По дефолту git можно "выключить", если бинарники удалить. Там нет висящего демона, который слушает определённый порт или сокет.
Ну вот это меня и интересует. Получается, что git использует порт, который слушает другой демон (sshd). Откуда sshd знает, кому дальше передавать запросы, после того, как он их расшифровал... Каша в голове... мармеладэээ
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
По-моему достаточно 22, у меня работает gitolite и nestat не видит порта 9418.
Т.е. ssh редиректит запросы дальше - на gitolite?
Нет, Вы авторизуетесь через ssh в системе под отдельным пользователем, этому пользователю доступна оболочка с ограниченным набором команд.
Фактически Вы выполняете команды в системе через ssh, git-сервер вообще не запущен.
По-моему достаточно 22, у меня работает gitolite и nestat не видит порта 9418.
Т.е. ssh редиректит запросы дальше - на gitolite?
Нет, Вы авторизуетесь через ssh в системе под отдельным пользователем, этому пользователю доступна оболочка с ограниченным набором команд.
Фактически Вы выполняете команды в системе через ssh, git-сервер вообще не запущен.
В этом случае мне не понятно, как так получается, что для git-пользователя (на сервере) добавленны ssh-кючи, т.е. пользователи авторизуются как git, но в истории коммитов имена пользователей именно те, которые были указаны git'овскими переменными (клиентская сторона). Просто передаеются переменные окружения?
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
пользователи авторизуются как git, но в истории коммитов имена пользователей именно те, которые были указаны git'овскими переменными
Ну так Вы пушите коммиты, в которых уже имена авторов прописаны. Они при этом не меняются. Даже если пушнуть коммиты разных авторов - всё останется, как было.
т.е. пользователи авторизуются как git, но в истории коммитов имена пользователей именно те, которые были указаны git'овскими переменными
AFAIK в самом git'е и нет никакой авторизации, т.е. вы в свой репозиторий можете запушить коммент кого угодно. Авторизация есть в ssh, и потому пушить можете только вы, и те, у кого есть ключ ssh. Но пушить они могут что угодно, и вообще, делать с git'ом что угодно, что позволено для пользователя, под именем которого они заходят(в ssh или локально).
В этом случае мне не понятно, как так получается, что для git-пользователя (на сервере) добавленны ssh-кючи, т.е. пользователи авторизуются как git, но в истории коммитов имена пользователей именно те, которые были указаны git'овскими переменными (клиентская сторона). Просто передаеются переменные окружения?
Если говорить о gitolite, то в нём права доступа и ключи пользователей хранятся в его же git-репозитории.