Как исправить 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
Было ли это руководство полезным? Сообщите нам об этом через форму обратной связи ниже. Вы также можете поделиться любыми вопросами или мыслями по этой теме.