Обновление репозитория 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 репозиторий

При работе с закрытыми 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
- Откройте терминал и введите команду:
git config --global credential.helper store
git pull
nano ~/.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 Неподписанный тег: Подписанный тег: Переопределение параметров конфигурации автоподписания: Импорт […]