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 295

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, я сделал следующее:

  1. ssh-add -K ~/.ssh/id_rsa
    Примечание: измените путь к тому, где находится ваш ключ id_rsa.
  2. ssh-add -A
  3. создайте (или отредактируйте, если он существует) следующее ~/.ssh/config file:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

и теперь мой пароль запоминается между перезагрузками моего Mac!

просто выполните следующую команду:

ssh-add -K

Он никогда не попросит вас снова ввести пароль.

вы можете удалить парольную фразу для ключа

$ 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)

enter image description here

Не используйте 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 вот так:

  1. узнайте, установлен ли он у вас.

    git credential-osxkeychain

  2. если он не установлен, вам будет предложено загрузить его как часть инструментов командной строки Xcode.

  3. если он установлен, сказать 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" и пароль как пароль для входа в систему

использовать ssh удаленный URL-адрес, указанный на сайте GitHub не https.

Если вы использование Windows и GIT без сторонних инструментов и ваш ключ не обеспечен по паролю / парольной фразе используйте это:

  1. Переменные Среды дома должен быть установлен в ваш профиль пользователя (например C:\Users\Laptop)
  2. перейти к C:\Users\Laptop\.папка СШ\ и редактировать файл "config" (или создать файл!) Пример: C:\Users\Laptop.ssh\config (Примечание: нет . В конец!)
  3. добавьте свой хост 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
    
  4. сохраните файл и клонируйте репозиторий следующим образом:

    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

Mobaxterme имел интерфейс пользовательского интерфейса для него

setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]