SSH Key-все еще запрашивает пароль и парольную фразу

Я несколько "мирюсь" с Github, всегда спрашивая мое имя пользователя и пароль, когда я клонирую репозиторий. Я хочу обойти этот шаг, потому что это раздражение в моем рабочем процессе.

Я попытался настроить ключ SSH (что я успешно сделал), используя это руководство. https://help.github.com/articles/generating-ssh-keys и я добился успеха.

моя проблема в том, что меня все еще просят ввести пароль и парольную фразу github при клонировании репозиторий (через 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 urls, он всегда будет запрашивать ваше имя пользователя / пароль.

Если вы правильно используете SSH при клонировании / настройке пультов ДУ. Затем убедитесь, что у вас есть ssh-агент для запоминания пароля. Таким образом, вы введете свою парольную фразу только один раз в терминальном сеансе.

Если это все еще слишком раздражает, просто установите ssh-ключ без парольной фразы.


добавить идентификатор без брелка

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

вы можете сделать это так:

ssh-add ~/.ssh/id_rsa 

Это попросит вас пароль, введите его, и он не будет спрашивать снова, пока вы не перезагрузите.

Добавить Идентификатор С Помощью Keychain

как указывает @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 и это обсуждение Twitter это Apple намеренно изменила поведение для ssh-агента в macOS 10.12 Sierra больше не загружать автоматически предыдущие ключи SSH. Чтобы поддерживать то же поведение, что и El Cap, я сделал следующий:

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

    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-agent. Ниже всегда будет запрашивать пароль

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, исправили мою проблему. Похоже, что Sierra изменила поведение по умолчанию (у меня возникла эта проблема после обновления).

этот я нашел особенно полезным: 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})

изменить: Я заметил, что в следующий раз, когда я сделал полную перезагрузку (он же агент остановился и перезапустился), это больше не работало. Более полное решение-это то, что @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

Примечание: вам придется делать это снова после каждого перезапуска.

решение здесь.


Я хотел бы добавить ответ для тех, кто все еще может потребоваться ввести пароль, потому что они установили IdentitiesOnly как да. Это может быть вызвано несколькими ключами и файлом идентификатора, являющимися ключами для 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, используя свои любимые имена, и вы нужно только добавить настройки, такие как вышеупомянутые четыре строки в config файл.

Хоста это имя, которое вы хотите ввести при подключении к серверу позже,Хоста является 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

    $ ssh-keygen -t rsa -b 4096 -C "your comments"
    
  • скопируйте открытый ключ и войдите на удаленный сервер

  • добавьте свой открытый ключ .ssh / authorized_keys

  • Если у вас есть несколько ключей ssh на вашем компьютере, вы можете добавить свой ключ, используя ssh-add

    $ 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 клон ssh: / / myhostname.com / git-server / repos / picalc.git

вы можете использовать дополнительные параметры конфигурации для записи хоста файла "config". Их можно найти в локальной папке установки git, например"C:\Program Файлы\\ГИТ и т. д\СШ файле 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 имел интерфейс UI для это

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