Git как запомнить логин пароль
Перейти к содержимому

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

  • автор:

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

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

Отслеживать
33.9k 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 репозиторию требуется авторизация. Чтобы каждый раз не вводить пароль, его можно сохранить в менеджере учётных данных. Это не безопасное решение, но в некоторых случаях может применяться. Рассмотрим как это делается в Linux (Ubuntu) и Windows.

Хранение в Ubuntu

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

Git-credentials

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

Хранение в Windows

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

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

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

Как сохранить имя пользователя и пароль в Git?

Создайте ключ ssh Github. Перейдите в github.com -> Настройки -> ключи SSH и GPG -> Новый ключ SSH. Теперь сохраните свой закрытый ключ на вашем компьютере.

Затем, если закрытый ключ сохранен как id_rsa в каталоге ~/.ssh/, мы добавим его для аутентификации как таковой:

ssh-add -K ~/.ssh/id_rsa

Более Безопасный Метод: Кэширование

Мы можем использовать git-credential-store для кэширования нашего имени пользователя и пароля в течение определенного периода времени. Просто введите следующее в CLI (terminal или в командной строке):

git config --global credential.helper cache

Вы также можете установить период ожидания (в секундах) как таковой:

git config --global credential.helper 'cache --timeout=3600'

Еще Менее Безопасный Метод

Git-credential-store также может использоваться, но сохраняет пароли в обычном текстовом файле на вашем диске как таковом:

git config credential.helper store

Устаревший ответ – Быстрый и небезопасный

Это небезопасный способ хранения пароля в виде обычного текста. Если кто-то получит контроль над вашим компьютером, ваш пароль будет раскрыт!

Вы можете установить свое имя пользователя и пароль следующим образом:

git config --global user.name "your username" git config --global user.password "your password"

Как сохранить логин и пароль для доступа в 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) и в следующий раз данные для входа не будут запрашиваться.

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

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