commit 30d051322d6d55f1d8c35da9101bd7a0261e8ea2 Author: admin1350 Date: Sat Feb 14 21:21:33 2026 +0000 Добавить readme.mdСудя по всему, вы хотите настроить зеркало (mirror) вашего репозитория из Gitea на GitHub, но у вас на GitHub включена двухфакторная аутентификация (2FA/readme.md diff --git a/readme.mdСудя по всему, вы хотите настроить зеркало (mirror) вашего репозитория из Gitea на GitHub, но у вас на GitHub включена двухфакторная аутентификация (2FA/readme.md b/readme.mdСудя по всему, вы хотите настроить зеркало (mirror) вашего репозитория из Gitea на GitHub, но у вас на GitHub включена двухфакторная аутентификация (2FA/readme.md new file mode 100644 index 0000000..b1f050f --- /dev/null +++ b/readme.mdСудя по всему, вы хотите настроить зеркало (mirror) вашего репозитория из Gitea на GitHub, но у вас на GitHub включена двухфакторная аутентификация (2FA/readme.md @@ -0,0 +1,59 @@ +Судя по всему, вы хотите настроить зеркало (mirror) вашего репозитория из Gitea на GitHub, но у вас на GitHub включена двухфакторная аутентификация (2FA/MFA). Встроенные возможности Gitea лучше всего подходят для этой задачи. + +Есть два основных пути, которые позволяют обойти ограничения 2FA при автоматическом зеркалировании: + +### Способ 1: Использование Personal Access Token (PAT) GitHub (Рекомендуемый) + +Это самый простой и надежный способ, так как Gitea изначально поддерживает аутентификацию по токену для HTTP-зеркал. Так как HTTP-протокол Git не поддерживает 2FA напрямую, токен служит заменой паролю . + +1. **Создайте токен на GitHub:** + * Зайдите в настройки GitHub: `Settings` → `Developer settings` → `Personal access tokens` → `Tokens (classic)`. + * Нажмите **"Generate new token"**. + * Выберите необходимые права (`scopes`). Для публичного репозитория достаточно отметить флажок `public_repo`. Если вы зеркалируете приватный репозиторий или используете GitHub Actions, вам также могут понадобиться права `repo` и `workflow` . + * Создайте токен и **обязательно скопируйте его**. GitHub покажет его только один раз. + +2. **Настройте зеркало в Gitea:** + * В вашем репозитории на Gitea перейдите в `Настройки` (Settings) → `Репозиторий-зеркало` (Mirror settings). + * В разделе "Зеркало отправки" (Push Mirror) нажмите **"Добавить новое зеркало отправки"** (Add Push Mirror). + * В поле **"Адрес удаленного репозитория Git"** (Git Remote Repository URL) укажите: + `https://github.com/<ваш_github_username>/<ваш_репозиторий>.git` + * В полях авторизации укажите: + * **Имя пользователя (Username):** Ваш GitHub username. + * **Пароль (Password):** Скопированный Personal Access Token. + * Настройте интервал синхронизации и сохраните зеркало. + +### Способ 2: Использование SSH и развернутого ключа (Deploy Key) + +Этот способ предпочтительнее, если вы хотите использовать SSH-ключи и не передавать токены по сети, а также если вам нужно ограничить доступ ключа только к одному репозиторию (через deploy key) . + +1. **Подготовьте SSH-ключ:** + * На сервере, где работает Gitea, сгенерируйте новую пару SSH-ключей (или используйте существующую), которая будет использоваться специально для зеркалирования. Обычно это делает администратор сервера. + * Например: `ssh-keygen -t ed25519 -C "gitea-mirror" -f ~/.ssh/gitea_mirror_key` + * **Важно:** Приватный ключ должен быть доступен пользователю, от которого запущен процесс Gitea. + +2. **Добавьте публичный ключ на GitHub как "Deploy Key":** + * На GitHub перейдите в ваш репозиторий → `Settings` → `Deploy keys` → `Add deploy key`. + * Вставьте содержимое публичного ключа (например, `gitea_mirror_key.pub`). + * Дайте ключу название и обязательно отметьте галочку **"Allow write access"**, так как зеркало будет отправлять (пушить) изменения. + * Нажмите `Add key`. Использование deploy key безопаснее, так как он привязан только к одному репозиторию и не имеет доступа к вашим аккаунту или другим репозиториям . + +3. **Настройте зеркало в Gitea:** + * В настройках зеркала вашего Gitea-репозитория, в поле **"Адрес удаленного репозитория Git"** укажите SSH-адрес вашего GitHub репозитория: + `git@github.com:<ваш_github_username>/<ваш_репозиторий>.git` + * Поля для логина и пароля оставьте пустыми. Gitea (или Forgejo) автоматически использует SSH-ключ для аутентификации, если он настроен для пользователя, от которого запущен процесс . + * Сохраните зеркало. + +### Альтернативный ручной способ + +Если встроенная функция зеркал по каким-то причинам не подходит, вы можете настроить "ручное" зеркалирование с помощью хуков Git . Этот метод дает полный контроль, но требует доступа к командной строке сервера. + +1. Убедитесь, что пользователь, от которого запускается Gitea, имеет доступ к GitHub по SSH (ключ добавлен в аккаунт или как deploy key). +2. В веб-интерфейсе Gitea перейдите в настройки репозитория → **"Управление Git hooks"** (Git Hooks). +3. Отредактируйте хук **`post-receive`** и добавьте в него команду для пуша в GitHub: + ```bash + #!/usr/bin/env bash + git push --mirror git@github.com:<ваш_github_username>/<ваш_репозиторий>.git + ``` +Теперь каждый раз, когда кто-то пушит в ваш репозиторий на Gitea, хук будет автоматически запускать зеркалирование на GitHub. + +Какой из вариантов вам кажется более удобным? Если выберете способ с SSH-ключом, могу подсказать, где именно на сервере с Gitea его нужно сохранить. \ No newline at end of file