clone-repo/readme.md

55 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Судя по всему, вы хотите настроить зеркало (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-ключ для аутентификации, если он настроен для пользователя, от которого запущен процесс .
* Сохраните зеркало.
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 его нужно сохранить.