Назад | Перейти на главную страницу

настроить Gitea SSH с nginx и openssh-server

Я только что настроил свой первый локальный сервер Gitea, и все работает нормально, кроме SSH. Обычный SSH работает нормально, но не тогда, когда я пытаюсь взаимодействовать с Gitea.

Показанный URL-адрес ssh://git@gitea.xxx.local:123/user/hello-world.git Почему "git @"? Мое имя пользователя не «git», но сервер Gitea работает как пользователь «git». Если я изменю «git» на свое настоящее имя пользователя, я, по крайней мере, смогу успешно пройти аутентификацию с помощью моего личного SSH-ключа. Как я могу исправить этот URL, чтобы отображалось правильное имя пользователя?

Однако, если я попробую git clone, Я всегда получаю fatal: '/user/hello-world.git' does not appear to be a git repository

Это мое gitea/app.ini файл:

[server]
ROOT_URL         = https://gitea.xxx.local/
DOMAIN           = gitea.xxx.local
HTTP_PORT        = 3000
SSH_DOMAIN       = gitea.xxx.local
SSH_PORT         = 123
DISABLE_SSH      = false

Gitea прослушивает только localhost, а я использую nginx в качестве обратного прокси из :443 к :3000 который отлично работает для Интернета, но не для SSH.

openssh-сервер слушает :123 и я могу успешно пройти аутентификацию там. Как перенаправить SSH-соединение на внутренний сервер Gitea? Также с nginx?

Это нормальное и ожидаемое поведение большинства серверов Git, посмотрите, что GitLab дает вам в качестве URL-адреса клонирования SSH, и вы увидите, что он также использует пользователя git.

Это потому, что если ваш git-сервер работает от имени пользователя git, он должен иметь доступ, просматривать, поддерживать и в конечном итоге удалять файлы в репозиториях.

Когда вы добавляете свой SSH-ключ через интерфейс Gitea, он добавит авторизованный ключ для пользователя git без привилегий SSH (перенаправление портов, pty и т. Д.) И обязательную команду, которая обратится в Gitea, чтобы сообщить, какой пользователь он пытается получить доступ к какому репозиторию. Затем он решит, как с этим справиться, авторизовать или нет, и в конечном итоге передаст информацию в Git для слияния с репозиторием.

Изменить: обратиться к no repository part: опять же, это нормально и ожидаемо, поскольку репозиторий git фактически находится в домашней папке пользователя git. Итак, когда вы пытаетесь получить доступ group/repo.git от пользователя git, который расширен до абсолютного пути /home/git/group/repo.git но если вы войдете как user, который расширится до /home/user/group/repo.git который мог не существовать, а если бы существовал, то мог бы быть другим. (дома пользователей являются примерами и, вероятно, будут отличаться по производству)