SSH Key-все еще запрашивает пароль и парольную фразу
Я несколько "мирюсь" с Github, всегда спрашивая мое имя пользователя и пароль, когда я клонирую репозиторий. Я хочу обойти этот шаг, потому что это раздражение в моем рабочем процессе.
Я попытался настроить ключ SSH (что я успешно сделал) с помощью этого руководства. https://help.github.com/articles/generating-ssh-keys и мне это удалось.
моя проблема заключается в том, что меня все еще просят ввести пароль и парольную фразу github при клонировании a репозиторий (через SSH). Я понимал, что после того, как я настроил этот ключ SSH, мне больше не придется этого делать.
Я немного не уверен, что спросить, поэтому я просто сформулирую свою цель.
Я хочу иметь возможность клонировать репозитории без необходимости постоянно вводить информацию о Github.
что мне не хватает с моим ключом SSH? Если кто-то может предоставить некоторые рекомендации или ресурсы, я был бы признателен, потому что я всегда чувствовал себя немного потерянным, когда дело доходило до аутентификации SSH в GitHub.
насколько мне известно, это команда, которая проверяет, правильно ли все работает, вот вывод с моей консоли:
~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.
когда я ввожу свой пароль, должен ли он сначала потерпеть неудачу? Затем, когда я ввожу свою парольную фразу,она проходит.
21 ответ:
Если вы работаете с
HTTPs
URL, он всегда будет запрашивать ваше имя пользователя / пароль.Если вы правильно используете
SSH
при клонировании / настройке пультов дистанционного управления. Затем убедитесь, что у вас есть ssh-агент для запоминания пароля. Таким образом, вы будете вводить пароль только один раз в терминальной сессии.Если это все еще слишком раздражает, то просто поставил SSH-ключ без пароля.
добавить идентификатор без брелка
могут быть случаи, когда вы не хотите, чтобы парольная фраза хранилась в связке ключей, но не хотите вводить парольную фразу снова и снова.
вы можете сделать это так:
ssh-add ~/.ssh/id_rsa
Это попросит вас ввести пароль, введите его, и он не будет спрашивать снова, пока вы не перезагрузите.
Добавить Идентификатор С Помощью Брелка
как указывает @dennis в комментариях, чтобы сохранить пароль через перезагрузки, сохраняя его в связке ключей, вы можете использовать
-K
опция при добавлении идентификатора, как это:ssh-add -K ~/.ssh/id_rsa
еще раз, это попросит вас пароль, введите его, и на этот раз он никогда не будет просить снова для этой личности.
на Mac OSX вы можете добавить свой закрытый ключ в брелок с помощью команды:
ssh-add -K /path/to/private_key
Если ваш закрытый ключ хранится в ~/.ssh и называется id_rsa:
ssh-add -K ~/.ssh/id_rsa
вам будет предложено ввести пароль, который будет храниться в вашей связке ключей.
я попробовал все ответы здесь и ни один из этих ответов работал! Мой пароль не будет сохраняться между сессиями/перезагрузки моего Mac.
что я узнал из чтения этот OpenRadar и это обсуждение в Твиттере это Apple намеренно изменила свое поведение для ssh-агента в macOS 10.12 Sierra больше не будет автоматически загружать предыдущие ключи SSH. Чтобы поддерживать то же поведение, что и El Cap, я сделал следующее:
ssh-add -K ~/.ssh/id_rsa
Примечание: измените путь к тому, где находится ваш ключ id_rsa.ssh-add -A
создайте (или отредактируйте, если он существует) следующее
~/.ssh/config
file:Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
и теперь мой пароль запоминается между перезагрузками моего Mac!
вы можете удалить парольную фразу для ключа
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
или
$ ssh-keygen -p
вы получаете приглашение для ключей. По умолчанию это
~/.ssh/id_rsa
Итак, нажмите enterвам будет предложено ввести текущую парольную фразу.
затем появится запрос на новую фразу пароля, нажмите enter
убедитесь, что вы используете SSH для вашего репозитория также
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)
Не используйте https, если ваш пульт использует https, то он будет продолжать запрашивать пароль, даже если вы добавили открытый ключ к Github и добавили закрытый ключ к ssh-агенту. Ниже всегда будет запрашивать пароль
mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)
попробовать
ssh-agent
Как там объясняется:https://help.github.com/articles/working-with-ssh-key-passphrases
Если вы используете windows, это сработало для меня:
eval `ssh-agent -s` ssh-add ~/.ssh/*_rsa
он запросит пароль во второй команде, и все.
для Mac OSX Sierra я обнаружил, что исправления, предложенные в выпуске github для Open Radar, исправили мою проблему. Похоже, Сьерра изменила поведение по умолчанию (у меня возникла эта проблема после обновления).
этот я нашел особенно полезным: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061
ssh-add -A
это привело к тому, что моя личность была добавлена к агенту,после я побежал
ssh-add -K {/path/to/key}
подводя итог, в OSX.12:
ssh-add -K {/path/to/key} ssh-add -A
в результате:
Identity added: {/path/to/file} ({/path/to/file})
изменить: Я заметил, что в следующий раз, когда я сделал полную перезагрузку (aka агент остановился и перезапустился), это больше не работало. Более полное решение - это то, что @ChrisJF упоминалось выше: создание . Вот вывод мой:
$ cat ~/.ssh/config Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
вы можете добавить столько
IdentityFile
записи, как вам нужно, но это настройка по умолчанию. Это "трендовый" ответ ссылка openradar выше, ATM, а также.
Я уже установил парольную фразу, но по какой-то причине он больше не узнает ее. Поэтому я просто добавил идентификационный файл в свой брелок снова, используя
ssh-add -K
и он перестал запрашивать пароль.
проблема, кажется, потому, что вы клонируете из HTTPS, а не SSH. Я пробовал все другие решения здесь, но все еще испытывал проблемы. Это сделало это для меня.
С помощью
osxkeychain helper
вот так:
узнайте, установлен ли он у вас.
git credential-osxkeychain
если он не установлен, вам будет предложено загрузить его как часть инструментов командной строки Xcode.
если он установлен, сказать Git, чтобы использовать
osxkeychain helper
через мировогоcredential.helper
config:
git config --global credential.helper osxkeychain
в следующий раз, когда вы клонируете url HTTPS, вам будет предложено ввести имя пользователя/пароль и предоставить доступ к связке ключей OSX. После того, как вы сделаете это в первый раз, он должен быть сохранен в связке ключей, и вам не придется вводить его снова.
Я должен был выполнить:
eval `ssh-agent -s` ssh-add
Примечание: вам придется делать это снова после каждого перезапуска.
решение здесь.
Я хотел бы добавить ответ для тех, кто все еще может потребоваться ввести пароль, потому что они установили Тождества только как да. Это может быть вызвано несколькими ключами и файлом идентификации, являющимися ключами для git или сервера.
после того, как я сгенерировал ключ и скопировать его на сервер:
ssh-keygen ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160
я обнаружил, что это не сработало.
затем я пошел проверить
~/.ssh/config
файл, я видел это в снизу:Host * IdentitiesOnly yes
затем я добавляю это выше:
Host 12gpu HostName 192.168.20.160 User lerner IdentityFile ~/.ssh/12gpu_server
Я могу просто войти, введя
ssh 12gpu
.затем вы можете добавить несколько ключей ssh, используя ваши любимые имена, и вы только нужно добавить настройки, как выше четыре строки в конфигурации файл.
Хоста это имя, которое вы хотите ввести при подключении к серверу позже,Хоста это ip или домен сервера, как github.com;пользователь имя пользователя входа на сервере как имя пользователя или git для github или gitlab; и IdentityFile это файл, в котором вы храните ключ, который вы создали.
этот ответ работал для меня в
Ubuntu
.см. этот документ GitHub для преобразования URL-адреса удаленного доступа из https в ssh. https://help.github.com/articles/changing-a-remote-s-url/
чтобы проверить, является ли URL remote ssh или https, используйтеgit remote -v
.для переключения с https на ssh:
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
как правило, вот шаги, чтобы позволить вам сделать удаленное подключение к серверу с помощью ssh без пароля:
создайте пару RSA private и public key
$ ssh-keygen -t rsa -b 4096 -C "your comments"
скопируйте свой открытый ключ и войдите на удаленный сервер
добавьте свой открытый ключ .ssh / authorized_keys
Если у вас есть несколько ключей ssh на вашем компьютере, вы можете добавить свой ключ с помощью СШ-добавить
$ ssh-add /path/to/private/key
затем попробуйте ssh на свой сервер
$ ssh username@your_ip_address
источник: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
Если вы используете ssh url для git, при запросе пароля для ssh введите имя пользователя как"git" и пароль как пароль для входа в систему
Если вы использование Windows и GIT без сторонних инструментов и ваш ключ не обеспечен по паролю / парольной фразе используйте это:
- Переменные Среды дома должен быть установлен в ваш профиль пользователя (например C:\Users\Laptop)
- перейти к C:\Users\Laptop\.папка СШ\ и редактировать файл "config" (или создать файл!) Пример: C:\Users\Laptop.ssh\config (Примечание: нет . В конец!)
добавьте свой хост git-сервера в файл" config " следующим образом:
#Example host entry Host myhostname.com HostName myhostname.com User git IdentityFile c:/users/laptop/.ssh/id_rsa.pub PasswordAuthentication no Port 422
сохраните файл и клонируйте репозиторий следующим образом:
git clone ssh:/ / myhostname. com / git-server / repos / picalc.git
вы можете использовать дополнительные параметры конфигурации для записи хоста файла "config". Их можно найти в локальной папке установки git, например"C:\Program Файлы\Git\etc\ssh\ssh_config". Отрывок:
# Host * # ForwardAgent no # ForwardX11 no # RhostsRSAAuthentication no # RSAAuthentication yes # PasswordAuthentication yes # HostbasedAuthentication no # GSSAPIAuthentication no # GSSAPIDelegateCredentials no # BatchMode no # CheckHostIP yes # AddressFamily any # ConnectTimeout 0 # StrictHostKeyChecking ask # IdentityFile ~/.ssh/identity # IdentityFile ~/.ssh/id_rsa # IdentityFile ~/.ssh/id_dsa # IdentityFile ~/.ssh/id_ecdsa # IdentityFile ~/.ssh/id_ed25519 # Port 22 # Protocol 2 # Cipher 3des # Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 # EscapeChar ~ # Tunnel no # TunnelDevice any:any # PermitLocalCommand no # VisualHostKey no # ProxyCommand ssh -q -W %h:%p gateway.example.com # RekeyLimit 1G 1h
та же проблема для меня и решение было:
см. этот документ github для преобразования URL-адреса удаленного доступа из https в ssh. Чтобы проверить, является ли URL remote ssh или https, используйте git remote-v. Чтобы переключиться с https на ssh: git remote set-url origin git@github.com:USERNAME/REPOSITORY.git @jeeYem