для bitbucket, пожалуйста, перейдите по этой ссылке
JDP
Ответы:
346
1. Сгенерируйте ключ SSH
Linux / Mac
Откройте терминал для создания ключей SSH:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
Для Windows
(Работает только в том случае, если программа коммитов может использовать сертификаты / закрытые и открытые ключи ssh)
Используйте Putty Gen для генерации ключа
Экспорт ключа как открытого ключа SSH
Вот прохождение по генерации замазки для вышеуказанных шагов
2. Свяжите ключ SSH с удаленным хранилищем
Этот шаг варьируется в зависимости от того, как настроен ваш пульт.
Если это репозиторий GitHub и у вас есть права администратора, перейдите в настройки и нажмите «добавить ключ SSH». Скопируйте содержимое ~/.ssh/id_rsa.pubв поле с надписью «Ключ».
Если ваш репозиторий администрируется кем-то другим, предоставьте администратору свой id_rsa.pub.
Если ваш удаленный репозиторий управляется вами, вы можете использовать эту команду, например:
Спасибо. Не могли бы вы объяснить, что делает команда config? Интересно, почему он даже не спрашивает у меня пароль в первый раз, когда я нажимаю на репо.
HelloWorldNoMore
1
@vivoconunxino Возможно, потому что это небезопасно. С gitman-страницы: «Использование этого помощника сохранит ваши пароли в незашифрованном виде на диске, защищенные только разрешениями файловой системы».
cmaster - восстановить
15
В этом ответе отсутствует предупреждение о том, что storeпомощник по учетным данным хранит пароль на диске в незашифрованном виде.
Это то, что исправило мою проблему после того, как я использовал git initлокально, а затем попытался нажать после добавления пульта из нового репозитория на веб-сайте GitHub.
Шелдонкрегер
1
Не уверен, почему это не является частью принятого ответа. Спасибо!
jwalk
1
Принятый ответ должен состоять из фактического принятого ответа, плюс этот.
Puce
3
Вы можете опустить "git + ssh: //" и просто использоватьgit@github.com/username/reponame.git
Иван Шулев
1
@IvanShulev Сначала я попробовал без git + ssh и не сработало
Антонелло
40
Просто используйте --repoопцию для команды git push. Как это:
Использование этого помощника будет хранить ваши пароли в незашифрованном виде на диске, защищенные только разрешениями файловой системы. Если это неприемлемый компромисс в отношении безопасности, попробуйте git-credential-cache или найдите помощника, который интегрируется с безопасным хранилищем, предоставляемым вашей операционной системой.
С таймаутом
Используйте git-credential-cache, который по умолчанию хранит пароль в течение 15 минут.
git config credential.helper cache
чтобы установить другое время ожидания, используйте --timeout(здесь 5 минут)
Если вы используете Mac, Git поставляется с режимом «osxkeychain» , который кэширует учетные данные в безопасной цепочке для ключей, привязанной к вашей системной учетной записи. Этот метод сохраняет учетные данные на диске, и срок их действия не истекает, но они шифруются той же системой, в которой хранятся сертификаты HTTPS и автозаполнения Safari. Запуск в командной строке будет включить эту функцию: git config --global credential.helper osxkeychain. Вам нужно будет сохранить учетные данные в связке ключей, также используя приложение связки ключей.
Если вы используете Windows, вы можете установить помощника под названием «Git Credential Manager для Windows». Это похоже на описанный выше помощник «osxkeychain», но использует хранилище учетных данных Windows для управления конфиденциальной информацией. Его можно найти по адресу https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [подчеркивает мой]
Просто хотел бы отметить кое-что о решении, сказанном выше несколько раз:
git config credential.helper store
После этого вы можете использовать любую команду, для которой требуется пароль. Тебе не нужно давить. (Вы также можете вытащить, например). После этого вам не нужно будет снова вводить имя пользователя / пароль.
Я использовал ответ, предложенный Павлом, и он сработал для меня. Моя разница заключалась в том, чтобы сделать это, пока я добавлял пульт:git remote add (alias) https://(name:password)@github.com/(the remote address).git
cat ~/.ssh/id_rsa.pubвставьте его туда, назовите и сохраните его (если у вас нет такого файла, сгенерируйте его для себя ssh-keygen -t rsa- просто введите Enter для всех запросов);
Зайдите в свой локальный репозиторий и обновите свой удаленный с помощью git remote set-url origin git+ssh://git@github.com/username/reponame.git- вы можете проверить его сначала git remote -v);
passwd зашифрован с использованием хранилища ключей
Если вы просто используете, git config --global credential.helper storeкак уже упоминалось, ваши незашифрованные пароли будут просто храниться в виде простого текста, под ~/.git-credentialsкоторым небезопасно, как кажется.
Попробуйте зашифровать его как
sudo apt-get install libgnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
git config --global credential.helper store
В этом случае вы используете https://git@github.com/username/reponame.git.
Если ваш компьютер защищен или вы не заботитесь о безопасности пароля, это можно сделать очень просто. Предполагая, что удаленный репозиторий находится на GitHub и originявляется вашим локальным именем для удаленного репозитория, используйте эту команду
Этот --pushфлаг обеспечивает изменение URL-адреса хранилища только для git pushкоманды. (Вопрос, заданный в оригинальном посте, касается git pushтолько команды. Требование ввода имени пользователя и пароля только для операций push - это обычная настройка для общедоступных репозиториев на GitHub. Обратите внимание, что для частных репозиториев на GitHub также потребуется имя пользователя + пароль для операций извлечения и извлечения. так что для частного репозитория вы бы не хотели использовать --push flag...)
ВНИМАНИЕ: это по своей природе небезопасно, потому что:
ваш интернет-провайдер или любой, кто регистрирует ваши обращения к сети, может легко увидеть пароль в виде обычного текста в URL;
любой, кто получит доступ к вашему ПК, сможет просмотреть ваш пароль с помощью git remote show origin.
Вот почему использование ключа SSH является приемлемым ответом.
Даже ключ SSH не является полностью безопасным . Любой, кто получает доступ к вашему ПК, может, например, сделать толчки, которые разрушают ваш репозиторий, или, что еще хуже, подтолкнуть коммиты, внося тонкие изменения в ваш код. (Все заданные коммиты явно хорошо видны на GitHub. Но если кто-то захочет тайно изменить ваш код, он может--amend выполнить предыдущий коммит, не изменяя сообщение фиксации, а затем принудительно протолкнуть его. Это было бы незаметно и довольно трудно заметить на практике. )
Но раскрытие вашего пароля хуже . Если злоумышленник узнает ваше имя пользователя и пароль, он может заблокировать вашу учетную запись, удалить учетную запись, окончательно удалить хранилище и т. Д.
В качестве альтернативы - для простоты и безопасности - вы можете указать только свое имя пользователя в URL, так что вам придется каждый раз вводить пароль, git pushно вам не нужно будет каждый раз указывать свое имя пользователя. (Мне очень нравится этот подход, необходимость вводить пароль дает мне паузу, чтобы думать каждый раз git push, когда я , поэтому я не могу git pushслучайно.)
Что делать, если пароль имеет @, это нарушает командный пароль после @ как часть сервера git?
Пранав Сингх
Если ваш пароль содержит «@», вы здесь, извините. Вы можете изменить свой пароль?
Радфаст
Необходимо подать запрос на изменение пароля, так как я делал автоматизацию для Continuous Integration с учетной записью службы (не личной). Прямо сейчас использовал SSH Keys для безопасного входа в систему
Pranav Singh,
1
Все это возникает потому, что git не предоставляет опцию в командах clone / pull / push / fetch для отправки учетных данных через канал. Хотя он предоставляет credential.helper, он хранится в файловой системе или создает демон и т. Д. Часто учетные данные GIT относятся к системному уровню и ответственность за их безопасность лежит на приложении, вызывающем команды git. Очень небезопасно.
Вот что я должен был обойти. 1. Версия Git (git --version) должна быть больше или равна 1.8.3.
GIT CLONE
Для клонирования используйте «git clone URL» после изменения URL-адреса из формата: http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} на http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}
Затем очистите хранилище пароля, как в следующем разделе.
продувка
Теперь это пошло бы и
написал пароль в git remote origin. Наберите "git remote -v", чтобы увидеть повреждения. Исправьте это, установив URL-адрес удаленного источника без пароля. «git remote set_url origin http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}»
записал пароль в .git / logs в репозиторий. Замените все экземпляры pwd, используя команду unix, например find .git / logs -exec sed -i 's / {my_url_with_pwd} // g' {} \; Здесь {my_url_with_pwd} - это URL с паролем. Так как URL имеет прямую косую черту, его необходимо экранировать двумя обратными косыми чертами. Например, для URL http: // kris: passs123@192.168.0.1/proj.git -> http: \\ / \\ / kris: passs123@192.168.0.1 \\ / proj.git
Если ваше приложение использует Java для выдачи этих команд, используйте ProcessBuilder вместо Runtime. Если вы должны использовать Runtime, используйте getRunTime (). Exec, который принимает массив String в качестве аргументов с аргументами / bin / bash и -c, а не тот, который принимает в качестве аргумента одну строку.
GIT FETCH / PULL / PUSH
установить пароль в удаленном URL-адресе git следующим образом: «git remote set_url origin http: // {myuser}: {mypwd} @ {my_repo_ip_address} / {myrepo_name.git}»
Выполните команду git fetch / push / pull. Вам не будет предложено ввести пароль.
Выполните очистку, как в предыдущем разделе. Не пропусти это.
Вам нужно настроить закрытый ключ SSH, вы можете просмотреть эту страницу , как выполнить настройку на Mac, если вы используете Linux, руководство должно быть почти таким же, в Windows вам понадобится такой инструмент, как MSYS .
Ответы:
1. Сгенерируйте ключ SSH
Linux / Mac
Откройте терминал для создания ключей SSH:
Для Windows
(Работает только в том случае, если программа коммитов может использовать сертификаты / закрытые и открытые ключи ssh)
Вот прохождение по генерации замазки для вышеуказанных шагов
2. Свяжите ключ SSH с удаленным хранилищем
Этот шаг варьируется в зависимости от того, как настроен ваш пульт.
Если это репозиторий GitHub и у вас есть права администратора, перейдите в настройки и нажмите «добавить ключ SSH». Скопируйте содержимое
~/.ssh/id_rsa.pub
в поле с надписью «Ключ».Если ваш репозиторий администрируется кем-то другим, предоставьте администратору свой
id_rsa.pub
.Если ваш удаленный репозиторий управляется вами, вы можете использовать эту команду, например:
scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub
3. Установите удаленный URL в форму, которая поддерживает SSH 1
Если вы выполнили действия, описанные выше, и по-прежнему получаете запрос на ввод пароля, убедитесь, что URL вашего репо находится в форме
в отличие от
Чтобы увидеть URL репо, запустите:
Вы можете изменить URL с помощью:
[1] Этот раздел включает в себя ответ Эрика П
источник
git remote set-url origin git@github.com:/username/projectname.git
Постоянная аутентификация в репозиториях Git,
Выполните следующую команду, чтобы включить кэширование учетных данных.
Использование также должно указывать срок действия кэширования ,
После включения кэширования учетных данных оно будет кэшироваться в течение 7200 секунд (2 часа) .
Примечание. Помощник по учету хранит незашифрованный пароль на локальном диске.
источник
git
man-страницы: «Использование этого помощника сохранит ваши пароли в незашифрованном виде на диске, защищенные только разрешениями файловой системы».store
помощник по учетным данным хранит пароль на диске в незашифрованном виде.git config --unset credential.helper
Если у вас уже настроены ключи SSH и вы все еще получаете запрос пароля, убедитесь, что URL-адрес вашего репо находится в форме
в отличие от
Чтобы увидеть URL репо, запустите:
Вы можете изменить URL
git remote set-url
следующим образом:источник
git init
локально, а затем попытался нажать после добавления пульта из нового репозитория на веб-сайте GitHub.git@github.com/username/reponame.git
Просто используйте
--repo
опцию для команды git push. Как это:источник
git remote set-url origin https://name:password@github.com/repo.git
name@github.com/....git
тоже просто работает, если вы не возражаете против того, чтобы каждый раз придираться к паролю.git push --repo https://github.com/Username/repo
он работает без.git
расширенияСохранение на неопределенный срок
Вы можете использовать git-credential-store через
который хранит ваш пароль в файловой системе в незашифрованном виде :
С таймаутом
Используйте git-credential-cache, который по умолчанию хранит пароль в течение 15 минут.
чтобы установить другое время ожидания, используйте
--timeout
(здесь 5 минут)Безопасное сохранение на неопределенный срок (OS X и Windows)
источник
credential.helper cache
не работает. Так и должно бытьgit config --global credential.helper wincred
.Я использовал ссылку https (
https://github.com/org/repo.git
) вместо ссылки ssh;Переключение решило проблему для меня!
источник
Шаг 1 -
Создайте ключи SSH в вашей системе Linux, используя команду ниже
Будет запрошена фраза-пароль и имя файла (по умолчанию будет ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub)
Шаг 2 -
После того, как файлы созданы, добавьте открытый ключ id_rsa.pub в раздел ssh учетной записи github.
Шаг 3 -
На вашем компьютере добавьте закрытый ключ id_rsa в ssh-agent с помощью команды ниже
Шаг 4 -
Теперь добавьте удаленный URL-адрес git@github.com: user_name / repo_name.git в локальное git-репо, используя следующую команду.
Это оно.
источник
Подключите ваш git-клиент к хранилищу учетных данных вашей ОС. Например, в Windows вы привязываете помощника по учетным данным к wincred:
Есть ли способ пропустить ввод пароля при использовании https: // на GitHub?
источник
В операционной системе Windows используйте это вместо этого, это работает для меня:
например
источник
Просто хотел бы отметить кое-что о решении, сказанном выше несколько раз:
После этого вы можете использовать любую команду, для которой требуется пароль. Тебе не нужно давить. (Вы также можете вытащить, например). После этого вам не нужно будет снова вводить имя пользователя / пароль.
источник
Я использовал ответ, предложенный Павлом, и он сработал для меня. Моя разница заключалась в том, чтобы сделать это, пока я добавлял пульт:
git remote add (alias) https://(name:password)@github.com/(the remote address).git
источник
Выполнение команды ниже решило проблему для меня.
Пожалуйста, обратитесь к документации github ниже:
источник
Насколько я знаю, есть просто два безопасных способа: ssh или passwd, зашифрованные с использованием хранилища ключей .
SSH
cat ~/.ssh/id_rsa.pub
вставьте его туда, назовите и сохраните его (если у вас нет такого файла, сгенерируйте его для себяssh-keygen -t rsa
- просто введите Enter для всех запросов);git remote set-url origin git+ssh://git@github.com/username/reponame.git
- вы можете проверить его сначалаgit remote -v
);touch t; git add t; git commit -m "test"; git push
и подтвердите «да», чтобы насладиться миром без пароля .passwd зашифрован с использованием хранилища ключей
Если вы просто используете,
git config --global credential.helper store
как уже упоминалось, ваши незашифрованные пароли будут просто храниться в виде простого текста, под~/.git-credentials
которым небезопасно, как кажется.Попробуйте зашифровать его как
источник
Мое решение для Windows:
ssh-keygen -t rsa
(Нажмите ввод для всех значений)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
источник
Если ваш компьютер защищен или вы не заботитесь о безопасности пароля, это можно сделать очень просто. Предполагая, что удаленный репозиторий находится на GitHub и
origin
является вашим локальным именем для удаленного репозитория, используйте эту командуЭтот
--push
флаг обеспечивает изменение URL-адреса хранилища только дляgit push
команды. (Вопрос, заданный в оригинальном посте, касаетсяgit push
только команды. Требование ввода имени пользователя и пароля только для операций push - это обычная настройка для общедоступных репозиториев на GitHub. Обратите внимание, что для частных репозиториев на GitHub также потребуется имя пользователя + пароль для операций извлечения и извлечения. так что для частного репозитория вы бы не хотели использовать--push flag
...)ВНИМАНИЕ: это по своей природе небезопасно, потому что:
ваш интернет-провайдер или любой, кто регистрирует ваши обращения к сети, может легко увидеть пароль в виде обычного текста в URL;
любой, кто получит доступ к вашему ПК, сможет просмотреть ваш пароль с помощью
git remote show origin
.Вот почему использование ключа SSH является приемлемым ответом.
Даже ключ SSH не является полностью безопасным . Любой, кто получает доступ к вашему ПК, может, например, сделать толчки, которые разрушают ваш репозиторий, или, что еще хуже, подтолкнуть коммиты, внося тонкие изменения в ваш код. (Все заданные коммиты явно хорошо видны на GitHub. Но если кто-то захочет тайно изменить ваш код, он может
--amend
выполнить предыдущий коммит, не изменяя сообщение фиксации, а затем принудительно протолкнуть его. Это было бы незаметно и довольно трудно заметить на практике. )Но раскрытие вашего пароля хуже . Если злоумышленник узнает ваше имя пользователя и пароль, он может заблокировать вашу учетную запись, удалить учетную запись, окончательно удалить хранилище и т. Д.
В качестве альтернативы - для простоты и безопасности - вы можете указать только свое имя пользователя в URL, так что вам придется каждый раз вводить пароль,
git push
но вам не нужно будет каждый раз указывать свое имя пользователя. (Мне очень нравится этот подход, необходимость вводить пароль дает мне паузу, чтобы думать каждый разgit push
, когда я , поэтому я не могуgit push
случайно.)источник
@
, это нарушает командный пароль после @ как часть сервера git?Все это возникает потому, что git не предоставляет опцию в командах clone / pull / push / fetch для отправки учетных данных через канал. Хотя он предоставляет credential.helper, он хранится в файловой системе или создает демон и т. Д. Часто учетные данные GIT относятся к системному уровню и ответственность за их безопасность лежит на приложении, вызывающем команды git. Очень небезопасно.
Вот что я должен был обойти. 1. Версия Git (git --version) должна быть больше или равна 1.8.3.
GIT CLONE
Для клонирования используйте «git clone URL» после изменения URL-адреса из формата: http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} на http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}
Затем очистите хранилище пароля, как в следующем разделе.
продувка
Теперь это пошло бы и
Если ваше приложение использует Java для выдачи этих команд, используйте ProcessBuilder вместо Runtime. Если вы должны использовать Runtime, используйте getRunTime (). Exec, который принимает массив String в качестве аргументов с аргументами / bin / bash и -c, а не тот, который принимает в качестве аргумента одну строку.
GIT FETCH / PULL / PUSH
источник
Вам нужно настроить закрытый ключ SSH, вы можете просмотреть эту страницу , как выполнить настройку на Mac, если вы используете Linux, руководство должно быть почти таким же, в Windows вам понадобится такой инструмент, как MSYS .
источник
Похоже, что, по крайней мере, при использовании TortoiseGIT в Windows, можно создавать ключи SSH и передавать их на сервер GIT, используя просто:
источник