Поиск по сайту:

Как исправить Git, всегда запрашивающий учетные данные пользователя для аутентификации HTTP (S)


Для доступа к удаленному репозиторию Git или работы с ним вы можете использовать протоколы SSH или HTTP(S); в первом случае, когда дело доходит до частных репозиториев, вы можете просто настроить ключи SSH без парольной фразы, что позволяет безопасно передавать данные без ввода имени пользователя и пароля.

Однако при использовании HTTP(S) при каждом подключении вам будет предложено ввести имя пользователя и пароль (когда Git требуется аутентификация для определенного контекста URL-адреса) – пользователи Github это хорошо знают.

В этой статье мы покажем вам, как исправить ситуацию, когда Git всегда запрашивает учетные данные пользователя для доступа через HTTP(S). Мы объясним различные способы предотвращения повторного запроса Git имени пользователя и пароля при взаимодействии с удаленным репозиторием через HTTP(S).

Как установить Git в Linux

Если в вашей системе не установлен пакет Git, запустите соответствующую команду для вашего дистрибутива Linux, чтобы установить его (при необходимости используйте команду Sudo).

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

Ввод имени пользователя и пароля Git в удаленный URL-адрес

Как мы упоминали ранее, при клонировании удаленного репозитория Git через HTTP(S) для каждого подключения требуется имя пользователя и пароль. , как показано.

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


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

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

а также в файле .git/config в локальной папке, который представляет угрозу безопасности.

cat .git/config

Примечание. Пользователям Github, которые включили двухфакторную аутентификацию или получают доступ к организации, использующей систему единого входа SAML, необходимо сгенерируйте и используйте личный токен доступа вместо ввода пароля для HTTPS Git (как показано в примерах результатов в этом руководстве). Чтобы создать токен личного доступа, в Github перейдите в Настройки => Настройки разработчика => Токены личного доступа.

Сохранение имени пользователя и пароля удаленного репозитория Git на диске

Второй метод — использовать помощник по учетным данным Git, чтобы сохранить ваше имя пользователя и пароль в простом файле на диске, как показано.

git config credential.helper store				
OR
git config --global credential.helper store		

С этого момента Git будет записывать учетные данные в файл ~/.git-credentials для каждого контекста URL-адреса при первом доступе. Чтобы просмотреть содержимое этого файла, вы можете использовать команду cat, как показано.

cat  ~/.git-credentials

Для последующих команд для того же контекста URL-адреса Git будет считывать ваши учетные данные пользователя из вышеуказанного файла.

Как и предыдущий метод, этот способ передачи учетных данных пользователя в Git также небезопасен, поскольку файл хранилища не зашифрован и защищен только стандартными разрешениями файловой системы.

Третий метод, описанный ниже, считается более безопасным.

Кэширование имени пользователя и пароля удаленного репозитория Git в памяти

И последнее, но не менее важное: вы также можете использовать помощник по учетным данным Git, чтобы временно сохранить свои учетные данные в памяти на некоторое время. Для этого введите следующую команду.

git config credential.helper cache
OR
git config --global credential.helper cache

После выполнения приведенной выше команды, когда вы впервые попытаетесь получить доступ к удаленному частному репозиторию, Git запросит ваше имя пользователя и пароль и сохранит их в памяти на некоторое время.

Время кэширования по умолчанию составляет 900 секунд (или 15 минут), после чего Git предложит вам еще раз ввести имя пользователя и пароль. Вы можете изменить его следующим образом (1800 секунд=30 минут или 3600 секунд=1 час).

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Дополнительную информацию о Git и помощниках по учетным данным см. на их справочных страницах.

man git
man git-credential-cache
man git-credential-store

Было ли это руководство полезным? Сообщите нам об этом через форму обратной связи ниже. Вы также можете поделиться любыми вопросами или мыслями по этой теме.