Я клонирую git-репозиторий в скрипт, подобный этому:
git clone https://user:password@host.com/name/.git
Это работает, но мое имя пользователя и мой пароль! теперь хранятся в исходной ссылке в .git/config
.
Как я могу предотвратить это, но все же сделать это в сценарии (поэтому нет ручного ввода пароля)?
git remote set-url origin https://host.com/name/.git
Ответы:
Метод, который я использую, заключается в том, чтобы фактически использовать
git pull
вместо клона. Сценарий будет выглядеть так:Это не будет хранить ваше имя пользователя или пароль в
.git/config
. Однако, если не будут предприняты другие шаги, имя пользователя и пароль в виде открытого текста будут видны, пока процесс выполняется из команд, которые показывают текущие процессы (напримерps
).Еще одно предложение, которое я хотел бы сделать (если вы не можете использовать ssh), - это использовать токен OAuth вместо обычного имени пользователя / пароля, поскольку он немного более безопасен. Вы можете создать токен OAuth в настройках своего профиля: https://github.com/settings/tokens .
Затем с помощью этого токена команда pull будет
источник
ps
во время выполнения извлечения (по крайней мере, если вы не запретили пользователям видеть процессы друг друга)IMO лучшее решение - использовать пользовательский
GIT_ASKPASS
помощник и предоставить пароль в качестве другой переменной среды. Так, например, создайте файлgit-askpass-helper.sh
как:а затем запустить
git clone https://username@hostname/repo
с переменными средыGIT_ASKPASS=/path/to/git-askpass-helper.sh
иGIT_PASSWORD=nuclearlaunchcodes
.Это имеет то преимущество, что пароль не будет виден и в списке процессов.
источник
git pull
решение, и позволит вам сохранить пароль в виде открытого текста в качестве секрета в выбранном вами инструменте автоматического развертывания.Вы можете ввести свои кредиты подключения в вашем
~/.netrc
файле. Что-то вроде:Просто убедитесь, что этот файл изменен на 600. Если вы используете Windows, может пригодиться следующая ссылка: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- окна к копи-пользователя-и-пароль
Лично у меня есть тенденция использовать ключи SSH для аутентификации (если вы, конечно, разрешены).
источник
Изучив десятки SO-сообщений, блогов и т. Д., Я опробовал каждый метод, и вот что я придумал. Это охватывает ВСЕ.
См. Описание Git Credentials & Private Packages
Это все способы и инструменты, с помощью которых вы можете безопасно аутентифицировать git для клонирования репозитория без интерактивного запроса пароля .
Лучшие варианты для хранения без открытого текста
Из того, что здесь предлагается, SSH Keys
GIT_ASKPASS
илиgit credential store
использование OS Keychain Manager могут быть лучшим выбором.Поскольку GIT_ASKPASS, вероятно, наименее понят из 3, я подробно опишу это здесь, а остальные находятся в чит-листе.
GIT_ASKPASS
Как создать
GIT_ASKPASS
скрипт:Как это использовать:
Скрипт получает стандартный ввод в виде:
Сценарий получает Git ENV, такие как:
Подробнее в чит-листе .
источник