{"meta":{"title":"Устранение неполадок проверки подлинности в репозитории","intro":"Узнайте, как устранять распространенные проблемы проверки подлинности при клонировании, отправке или извлечении из репозитория в пространстве кода.","product":"Codespaces","breadcrumbs":[{"href":"/ru/codespaces","title":"Codespaces"},{"href":"/ru/codespaces/troubleshooting","title":"Устранение неполадок"},{"href":"/ru/codespaces/troubleshooting/troubleshooting-authentication-to-a-repository","title":"Проверка подлинности в репозиториях"}],"documentType":"article"},"body":"# Устранение неполадок проверки подлинности в репозитории\n\nУзнайте, как устранять распространенные проблемы проверки подлинности при клонировании, отправке или извлечении из репозитория в пространстве кода.\n\nПри создании пространства кода для репозитория обычно можно использовать `git pull` и `git push` извлекать и отправлять изменения в этот репозиторий без дополнительной проверки подлинности. Однако иногда при попытке выполнить эти операции могут возникать ошибки проверки подлинности.\n\nЕсли вы пытаетесь взаимодействовать с репозиторием, кроме того, из которого вы создали пространство кода, могут возникнуть ошибки.\n\n## Проверка подлинности в репозитории, из который вы создали пространство кода\n\nЕсли вы пытаетесь отправить или извлечь из репозитория, из которого вы создали пространство кода, но проверка подлинности завершается ошибкой, может `git@github.com: Permission denied (publickey)` возникнуть ошибка или `Host key verification failed`.\n\nЭти ошибки могут возникнуть, если вы используете репозиторий dotfiles с GitHub Codespaces, и вы настроили Git использовать протокол, отличный от HTTPS для передачи данных в удаленный репозиторий. Например, возможно, вы настроили Git для использования SSH, включив строки, как показано ниже в файле конфигурации в dotfiles.\n\n```shell\n[url \"git@github.com:\"]\n  insteadOf = https://github.com/\n```\n\nGitHub Codespaces использует протокол HTTPS по умолчанию и выполняет проверку подлинности с настроенным доступом `GITHUB_TOKEN` на чтение и запись в репозиторий, из которого вы создали пространство кода. Рекомендуется использовать протокол HTTPS по умолчанию и `GITHUB_TOKEN` в пространстве кода. Разрешения обычно `GITHUB_TOKEN` ограничиваются только одним репозиторием, следуя принципу безопасности наименьших привилегий. Проверка подлинности SSH не имеет точных разрешений репозитория, поэтому случайное воздействие ключа SSH может предоставить кому-то доступ ко всем репозиториям.\n\nЧтобы использовать HTTPS по умолчанию, удалите конфликтующую конфигурацию из dotfiles. Если репозиторий dotfiles содержит скрипт установки в распознаваемом файле, например `install.sh`, можно использовать логику, как показано ниже, чтобы исключить конфигурацию в пространствах кода.\n\n```shell\nif [ -z \"$CODESPACES\" ]; then\n  git config --global url.\"git@github.com\".insteadOf \"https://github.com\"\nfi\n```\n\nЕсли вы работаете в пространстве кода, созданном из доверенного репозитория, и необходимо использовать SSH, убедитесь, что пространство кода настроено для проверки подлинности с помощью ключа SSH, связанного с учетной записью GitHub . Дополнительные сведения см. в разделе [Создание нового ключа SSH и его добавление в ssh-agent](/ru/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).\n\n## Проверка подлинности в репозиториях, из которыми вы не создали пространство кода\n\nПространство `GITHUB_TOKEN` кода настроено с доступом на чтение и запись к репозиторию, из которого вы создали пространство кода. По умолчанию маркер не имеет доступа к другим репозиториям. Возможно, вы не можете клонировать репозиторий или отправить его в клонированный репозиторий.\n\nНе рекомендуется вручную обновлять значение `GITHUB_TOKEN` пространства кода. Если для проекта требуется доступ к другим репозиториям, вы можете предоставить пространств кода доступ к этим репозиториям, перечислив дополнительные разрешения в конфигурации контейнера разработки. Это позволит пользователям авторизовать дополнительные разрешения при создании пространства кода. Однако он не изменит разрешения существующего пространства кода. Дополнительные сведения см. в разделе [Управление доступом к другим репозиториям в кодовом пространстве](/ru/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces).\n\nЕсли вам нужен доступ к другому репозиторию в существующем пространстве кода или если необходимые разрешения относятся к вам и не применяются к другим участникам, можно создать personal access token с доступом к репозиторию и добавить маркер в пространство кода. Мы рекомендуем ограничить доступ маркера с помощью fine-grained personal access token, выбора только репозиториев, к которым требуется доступ, и предоставления необходимого доступа только к разрешениям \"Содержимое\\*\\*\\*\\*\". Дополнительные сведения см. в разделе [Управление личными маркерами доступа](/ru/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token).\n\nЗатем маркер можно добавить в качестве переменной среды в пространстве кода или в виде секрета для GitHub Codespaces. При создании секрета следует разрешить доступ только к определенным доверенным репозиториям. При добавлении нового секрета вам будет предложено перезагрузить существующее пространство кода для извлечения нового секрета. Дополнительные сведения см. в разделе [Управление секретами, специфичными для ваших аккаунтов, для GitHub Codespaces](/ru/codespaces/managing-your-codespaces/managing-your-account-specific-secrets-for-github-codespaces).\n\nЧтобы использовать маркер для проверки подлинности в пространстве кода, у вас есть следующие параметры.\n\n* При создании переменной среды или секрета можно использовать имя `GH_TOKEN`. Переменная `GH_TOKEN` используется по умолчанию в операциях GitHub CLI, поэтому можно клонировать репозиторий с помощью команды `gh repo clone OWNER/REPO`.\n\n  Однако если вы попытаетесь отправить в репозиторий с помощью `git push`помощника по учетным данным Git, попытается использовать существующий `GITHUB_TOKEN` для проверки подлинности, и проверка подлинности завершится ошибкой. Вы можете переопределить вспомогательный элемент, но это может привести к трению при попытке взаимодействовать с исходным репозиторием, из которого вы создали пространство кода.\n* Вы можете клонировать репозиторий с URL-адресом, который включает маркер доступа. Замените `YOUR-VARIABLE` именем созданной переменной среды или секрета.\n\n  ```shell\n  git clone https://USERNAME:$YOUR-VARIABLE@github.com/OWNER/REPO`\n  ```\n\n  Это позволит сохранить маркер доступа для конкретного репозитория, поэтому вы сможете отправить и извлечь из репозитория без переопределения существующего вспомогательного средства учетных данных.\n\n  > \\[!NOTE]\n  > Если клонировать таким образом, маркер будет отображаться в конфигурации Git. Этот метод следует использовать только при работе в пространстве кода, созданном из доверенного репозитория, и необходимо максимально ограничить область маркера доступа."}