Перейти к содержимому

Git как запомнить логин пароль

  • автор:

Обновление репозитория git без ввода паролей

Есть корпоративный аккаунт «А» с приватными репозиториями на github.com;
есть аккаунт «B» — мой обычный аккаунт, который имеет административный доступ к репозиториям аккаунта «А». При обновлении репозитория на сервере через консоль командой git pull система каждый раз запрашивает пароль. Ввожу пароль аккаунта «В» и команда успешно выполняетя. Вопрос: как сделать так, чтобы при вводе команды из консоли, система не запрашивала пароль? Это должно позволить выполнять обновление репозитория из php. Что для этого нужно, размещать какой-то специальный ключ на сервере?

Отслеживать
34k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
задан 29 апр 2015 в 12:41
1,142 5 5 золотых знаков 22 22 серебряных знака 53 53 бронзовых знака
remote для репозитория указан как https или как ssh?
29 апр 2015 в 12:48

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Запустите в консоли команду git remote -v и посмотрите, через какой протокол у вас осуществляется доступ к репозиторию.

Если это https, то будет примерно следующий путь:

https://github.com/USERNAME/OTHERREPOSITORY.git 

Для ssh будет такой:

[email protected]:USERNAME/OTHERREPOSITORY.git 

https

Требуется Git версии не ниже 1.7.10

В этом случае вам всегда требуется указывать пароль при общении с сервером. Git можно попросить сохранять на некоторое время (по умолчанию на 15 минут) введённые данные командой:

> git config --global credential.helper cache 

При желании можно изменить стандартное время запоминания командой

> git config --global credential.helper "cache --timeout=3600" 

(время указывается в секундах)

Вы можете также указать git хранить ваши данные постоянно:

> git config credential.helper store 

При этом ваши данные будут храниться в открытом виде в файле .git-credentials.

Обнулить настройки этой возможности можно командой:

> git config --unset credential.helper 

При желании можно подобное поведение для всех репозиториев, для этого нужно передать дополнительный ключ —global .

В зависимости от этой настройки, информация с вашими данными будет расположена либо в каталоге проекта, либо в $HOME

Вы можете указать информацию для авторизации в url, по которому осуществляете доступ к репозиторию, для этого его нужно преобразовать так:

https://username:[email protected]/USERNAME/OTHERREPOSITORY.git 

Измените текущий url в remote на указанный (как это сделать, описано ниже в ответе) и авторизация не будет запрашиваться.

Помните, что и в этом случае ваши данные будут храниться в открытом виде.

Существует возможность настроить netrc

SSH

Про работу с запароленным ключём SSH знаю лишь то, что можно настроить ssh-agent, который аналогично позволит не вводить каждый раз пароль от ключа ssh.

Для начала создайте ssh-ключ с помощью команды:

> ssh-keygen 

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

По умолчанию пара ключей появляется в каталоге ~/.ssh/ . Вам нужно скопировать содержимое файла id_rsa.pub (если вы не задавали другое при создании ключа) и сохранить его в своём профиле на GitHub (Settings -> SSH Keys -> Add SSH key).

После этого можно перейти к настройке ssh-agent :

> echo $SSH_AGENT_PID 

Если ssh-agent запущен, то должен вернуться его номер процесса. В этом случае можно пропустить следующий пункт и перейти к команде ssh-add .
Если вернулась пустая строка, необходимо запустить ssh-agent перед продолжением.

Запускаем ssh-agent в фоне:

> eval "$(ssh-agent -s)" # Agent pid 59566 

Теперь осталось добавить сгенерированный ключ в ssh-agent :

> ssh-add ~/.ssh/id_rsa 

Если вы настроите доступ по ssh к своему репозиторию с использованием ключа, то работу, вероятно, можно будет производить и из программ.

Для уже созданного репозитория можно изменить способ доступа, используя команду

> git remote set-url origin

где задаёт путь, в котором используется нужный протокол

Как сохранить логин и пароль для доступа в git репозиторий

Drupeople.ru

При работе с закрытыми git репозиториями приходится каждый раз вводить логин и пароль при подключении по SSH. Это связано с тем, что Git не кеширует пользовательские данные. Решить эту проблему можно двумя способами:

  • создать ssh ключ и добавить его в профиль git платформы
  • сохранить логин и пароль

В это статье рассмотрим второй вариант.

Важно понимать, что логин и пароль будут сохранены в текстовом файле в открытом виде. Этот файл можно открыть текстовым редактором и увидеть все пользовательские данные, поэтому способ не самый безопасный. Тем не менее, если вы работаете один за своим компьютером, то способ вполне рабочий.

Существует два метода хранения пароля:

  • cache режим хранит пароль в памяти определенное время (конечный срок)
  • store режим сохраняет пароль на постоянной основе

Чтобы сохранять логин и пароль в режиме «cache», используйте команду:

git config --global credential.helper cache --timeout 3600
  • git config — команда для настройки
  • —global — указываем, что будет настраивать глобально, а не для репозитория
  • credential.helper cache — указываем режим хранения данных «cache»
  • —timeout — как долго будет хранится пароль (в секундах)

Чтобы сохранять пользовательские данные навсегда, воспользуйтесь командой:

git config --global credential.helper store
  • git config — команда для настройки
  • —global — указываем, что будет настраивать глобально, а не для репозитория
  • credential.helper store — указываем режим хранения данных «store»

По умолчанию пользовательские данные хранятся в файле домашнего каталога пользователя ~/.git-credentials

После выполнения команды нужно ввести логин и пароль (например сделать git pull) и в следующий раз данные для входа не будут запрашиваться.

Хранение и редактирование доступов от Git

При обращении к удалённому Git репозиторию требуется авторизация. Чтобы каждый раз не вводить пароль, его можно сохранить в менеджере учётных данных. Это не безопасное решение, но в некоторых случаях может применяться. Рассмотрим как это делается в Linux (Ubuntu) и Windows.

Хранение в Ubuntu

  1. Откройте терминал и введите команду:
git config --global credential.helper store
git pull
nano ~/.git-credentials

Git-credentials

Пароль и логин записываются без шифрования, поэтому способ нельзя считать надёжным.

Хранение в Windows

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

Диспетчер учетных данных

Пароль здесь нельзя посмотреть или украсть. Разрешается только изменить на другой.

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

Мануал

Автор cryptoparty На чтение 4 мин Опубликовано 04.01.2020

Чтобы получить доступ к удаленному 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 [на Debian/Ubuntu] # yum install git [на CentOS/RHEL/Fedora] $ sudo zypper install git [на OpenSuse] $ sudo pacman -S git [на Arch Linux]

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

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

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

$ sudo git clone https://username:your_password@github.com/username/repo_name.git или $ sudo git clone https://username:your_password@github.com/username/repo_name.git local_folder

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

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

$ cat .git/config

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

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

Второй способ – использовать Git credentials helper , чтобы сохранить имя пользователя и пароль в обычном файле на диске, как показано ниже:

$ git config credential.helper store или $ git config --global credential.helper store

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

Чтобы просмотреть содержимое этого файла, вы можете использовать команду cat, как показано тут:

$ cat ~/.git-credentials

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

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

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

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

И последнее, но не менее важное: вы также можете использовать Git credentials helper, чтобы временно сохранить ваши учетные данные в памяти на некоторое время.

Для этого выполните следующую команду:

$ git config credential.helper cache или $ git config --global credential.helper cache

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

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

Вы можете изменить его следующим образом (1800 секунд = 30 минут или 3600 секунд = 1 час).

$ git config --global credential.helper 'cache --timeout=18000' или $ git config --global credential.helper 'cache --timeout=36000'

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

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

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

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!

Добавить комментарий Отменить ответ

Поддержать нас

  • Аудит ИБ (49)
  • Вакансии (12)
  • Закрытие уязвимостей (110)
  • Книги (27)
  • Мануал (2 385)
  • Медиа (66)
  • Мероприятия (39)
  • Мошенники (23)
  • Обзоры (835)
  • Обход запретов (34)
  • Опросы (3)
  • Скрипты (122)
  • Статьи (366)
  • Философия (133)
  • Юмор (19)

Наш Telegram

Социальные сети
Поделиться

Anything in here will be replaced on browsers that support the canvas element

  • �� Как проверить IPv4-адреса в скрипте 25.12.2023

Проверка IP-адресов – распространенная задача в сетевом и системном администрировании. В этом уроке мы узнаем, как проверить IPv4-адреса с помощью скрипта оболочки. Это особенно полезно в ситуациях, когда нужно убедиться, что пользовательский ввод или данные из другого источника имеют правильный формат IPv4. IPv4 против IPv6: В чем разница между IPv4 и IPv6 Понимание формата адресов […]

Deep Packet Inspection (DPI) – это передовая техника сетевой фильтрации. Если традиционные методы мониторинга и фильтрации сети позволяют лишь поверхностно изучить заголовки пакетов, то DPI проникает глубже, тщательно анализируя фактическое содержание данных в пакетах. Такая детальная проверка позволяет получить полное представление о потоке данных, что дает возможность определить не только тип или категорию данных, но […]

Обратный инжиниринг, термин, часто ассоциируемый с технологическими инновациями и решением проблем, включает в себя сложный процесс раскрытия дизайна, структуры или функциональности продукта, системы или части технологии, чтобы понять их внутреннюю работу. Эта многогранная дисциплина играет ключевую роль в различных отраслях промышленности, способствуя инновациям, обеспечивая совместимость и способствуя продвижению вперед. Сегодня обратный инжиниринг услуги выполняют одни из лучших […]

Компания “Автозайм”: надежное залоговое кредитование в СПб и по всей России “Автозайм” представляет собой современный автоломбард, который оперирует в различных городах России, включая Санкт-Петербург – https://spb.carzaem.ru/autolombard. Компания специализируется на предоставлении кредитов под залог автомобилей, предлагая клиентам удобные и прозрачные условия. Основные преимущества Быстрый и простой процесс. Процедура получения займа в “Автозайм” максимально упрощена. Клиенты могут подать […]

Мы рассмотрим подписание коммитов и тегов ключом GPG, а также отправку и получение открытых ключей GPG на сервер ключей для проверки. Шпаргалка Неподписанный коммит: Подписанный коммит: Если ваши адреса электронной почты git и gpg-ключа отличаются, это приведет к неудаче, пока вы не настроите свой git signingkey Неподписанный тег: Подписанный тег: Переопределение параметров конфигурации автоподписания: Импорт […]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *