SSH Key - по-прежнему запрашивается пароль и кодовая фраза

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

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

Моя проблема в том, что меня все еще спрашивают о моем пароле github и кодовой фразе при клонировании репозитория (используя SSH). Я понял, что после того, как я установил этот ключ SSH, мне больше не пришлось бы это делать.

Я немного не уверен, что спросить, поэтому я просто сформулирую свою цель.

Я хочу, чтобы иметь возможность клонировать репозитории, не заставляя меня постоянно заполнять мою информацию Github.

Что мне не хватает с моим SSH-ключом? Если кто-то может предоставить некоторые рекомендации или ресурсы, я был бы признателен, потому что я всегда чувствовал себя немного потерянным, когда дело касалось аутентификации SSH в GitHub.

Насколько я знаю, это команда, которая проверяет правильность работы, вот вывод с моей консоли:

~ $ ssh -T [email protected]
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.

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

Ответ 1

Если вы работаете с HTTPs urls, он всегда будет запрашивать ваше имя пользователя/пароль.

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

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

Ответ 2

Добавить личность без брелка

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

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

ssh-add ~/.ssh/id_rsa 

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

Добавить личность используя брелок

Как отмечает @dennis в комментариях, чтобы сохранить парольную фразу при перезапусках, сохранив ее в -K для ключей, вы можете использовать -K (-K для Ubuntu) при добавлении идентификатора следующим образом:

ssh-add -K ~/.ssh/id_rsa

Еще раз, это спросит вас о парольной фразе, введите ее, и на этот раз она никогда больше не будет запрашивать эту личность.

Ответ 3

В Mac OSX вы можете добавить свой закрытый ключ в цепочку для ключей, используя команду:

ssh-add -K /path/to/private_key

Если ваш закрытый ключ хранится в ~/.ssh и называется id_rsa:

ssh-add -K ~/.ssh/id_rsa

Затем вам будет предложено ввести пароль, который будет храниться в вашей цепочке для ключей.

Изменить - Ручка перезапуска

Чтобы не нужно было вводить пароль даже после перезапуска, добавьте следующее в файл конфигурации ssh (обычно находится в ~/.ssh/config)

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

Ответ 4

Я попробовал все ответы здесь и ни один из этих ответов не работал! Мой пароль не будет сохраняться между сеансами/перезагрузками моего Mac.

Что я узнал из чтения этого OpenRadar и это обсуждение в Twitter заключалось в том, что Apple намеренно изменила поведение для ssh-agent в macOS 10.12 Sierra, чтобы больше не загружать предыдущие SSH-ключи. Чтобы поддерживать то же поведение, что и El Cap, я сделал следующее:

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

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

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

Ответ 5

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

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

или вы можете запустить

$ ssh-keygen -p

вы получите приглашение для ключевого файла. По умолчанию он ~/.ssh/id_rsa, поэтому нажмите enter

Вам будет предложено ввести текущую временную фразу.

Затем появится приглашение для новой фразы, нажмите enter

Ответ 6

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

ssh-add -K

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

Ответ 7

Убедитесь, что вы используете ssh для своего репозитория.

[email protected]:~/my-projects/jenkins-cje-2017$ git remote -v origin [email protected]:eMahtab/jenkins-cje-2017.git (fetch) origin [email protected]:eMahtab/jenkins-cje-2017.git (push)

введите описание изображения здесь

Не используйте https, если ваш пульт использует https, тогда он будет продолжать запрашивать пароль, даже если вы добавили открытый ключ в Github и добавили закрытый ключ к ssh-agent. Ниже всегда будет запрашиваться пароль

[email protected]:~/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)

Ответ 8

Если вы используете Windows, это работает для меня:

eval 'ssh-agent -s'
ssh-add ~/.ssh/*_rsa

Он будет запрашивать пароль во второй команде, и это все.

Ответ 9

Я должен был выполнить:

eval 'ssh-agent -s'
ssh-add

Примечание: вам придется делать это снова после каждого перезапуска. Если вы хотите избежать этого, то введите его в свой файл .bashrc, который находится в C:\Users\<<USERNAME>>\.bashrc в Windows. Возможно, он скрыт, поэтому убедитесь, что вы видите скрытые файлы.

Решение найдено здесь.

Ответ 11

Этот ответ работал для меня в Ubuntu.

Посмотрите этот документ GitHub для преобразования удаленного URL из https в ssh. https://help.github.com/articles/changing-a-remote-s-url/
Чтобы проверить, является ли удаленный URL-адрес ssh или https, используйте git remote -v.

Чтобы переключиться с https на ssh:
git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

Ответ 12

Для 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})

EDIT: Я заметил, что в следующий раз, когда я выполнил полную перезагрузку (иначе агент остановился и перезапустился), это не сработало. Более полное решение - это то, что сказал @ChrisJF: создание файла ~/.ssh/config. Здесь мой вывод:

$ cat ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

Вы можете добавить столько записей IdentityFile, сколько вам нужно, но это настройка по умолчанию. Это "трендовый" ответ на ссылку openradar выше, ATM.

Ответ 13

Я уже установил парольную фразу, но по какой-то причине он больше не узнает ее. Поэтому я снова добавил файл идентификатора в свой keychain, используя ssh-add -K, и он прекратил запрашивать мой пароль.

Ответ 14

Работал в LinuxMint/Ubuntu

Сделайте следующие шаги

Шаг 1:

Перейти к файлу => /.ssh/config

Сохраните приведенные ниже строки в файл

Host bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /home/apple/myssh-privatekey
    AddKeysToAgent yes

Не забудьте добавить эту строку AddKeysToAgent yes

Шаг 2:

Откройте терминал и добавьте набор ключей в ssh-add

$ ssh-add -k /home/apple/myssh-privatekey

предоставить пароль.

Ответ 15

Недавно я обновил MacOS до Mojave и установил некоторые инструменты через homebrew, который, похоже, заменил версию ssh-add для Apple на другую. Моя версия ssh-add умолчанию не имела опции -K. Это привело к следующей ошибке:

# ssh-add: illegal option -- K

Вы можете увидеть, какая у вас версия ssh-add, запустив which ssh-add.

(Мой был сохранен в /usr/local/bin/ssh-add)

Чтобы это исправить, мне пришлось указать ключ к версии Apple:

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git/GitHub отлично работал потом. Для получения дополнительной информации см.: Ошибка: ssh-add: недопустимая опция - K

Ответ 16

Кажется, проблема в том, что вы клонируете из HTTPS, а не из SSH. Я попробовал все другие решения здесь, но все еще испытывал проблемы. Это сделало это для меня.

Используя osxkeychain helper вот так:

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

    git credential-osxkeychain

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

  3. Если он установлен, скажите Git использовать osxkeychain helper с помощью глобальной конфигурации credential.helper:

    git config --global credential.helper osxkeychain

В следующий раз, когда вы клонируете URL-адрес HTTPS, вам будет предложено ввести имя пользователя/пароль и предоставить доступ к цепочке ключей OSX. После того, как вы сделаете это в первый раз, он должен быть сохранен в вашей цепочке для ключей, и вам не придется вводить его снова.

Ответ 17

Если вы используете ssh url для git, при запросе пароля для ssh введите имя пользователя как "git" и пароль как пароль для входа в систему

Ответ 18

Я хотел бы добавить ответ для тех, кому все еще может потребоваться ввести пароль, потому что они установили IdentitiesOnly как да. Это может быть вызвано несколькими ключами и файлом идентификации, являющимися ключами для git или server.

После того, как я сгенерировал ключ и скопировал его на сервер:

ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub [email protected]

Я обнаружил, что это не сработало.

Тогда я пошел, чтобы проверить файл ~/.ssh/config, я увидел это внизу:

Host *
IdentitiesOnly yes

Тогда я добавлю это выше:

Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server

Я могу просто войти, введя ssh 12gpu.

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

Хост - это имя, которое вы хотите ввести при последующем подключении к серверу; HostName - это IP-адрес сервера или домен, такой как github.com; Пользователь - это имя пользователя, которое вы регистрируете на сервере, например, имя пользователя или git для github или gitlab; и IdentityFile - это файл, в котором вы храните сгенерированный вами ключ.

Ответ 19

Как правило, вот шаги, позволяющие вам сделать удаленное подключение к вашему серверу, используя ssh без пароля:

  • Создайте пару RSA частного и открытого ключа

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

  • Добавьте ваш открытый ключ в .ssh/авторизованный_кей

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

    $ ssh-add/path/to/private/key

  • Затем попробуйте SSH к вашему серверу

    $ ssh [email protected]_ip_address

Источник: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html

Ответ 20

Вот что сработало для меня: git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

Ответ 21

Вам нужно использовать агент ssh. Краткий ответ: попробуйте

ssh-add

перед нажатием. Введите ваш пароль при запросе.

Проверьте оригинальный ответ StackExchange здесь https://unix.stackexchange.com/a/12201/268450

Ответ 22

Используйте ssh удаленный url, предоставленный Github не https.

Ответ 23

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

  1. Переменная среды HOME должна быть настроена на ваш профиль пользователя (например, C:\Users\Laptop)
  2. Перейдите в папку C:\Users\Laptop\.ssh\и отредактируйте файл "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 Files\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,[email protected],hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h

Ответ 24

Та же проблема для меня, и решение было:

Посмотрите этот документ github для преобразования удаленного URL из https в ssh. Чтобы проверить, является ли удаленный URL-адрес ssh или https, используйте git remote -v. Чтобы переключиться с https на ssh: git origin set-url origin [email protected]: USERNAME/REPOSITORY.git @jeeYem

Ответ 25

У Mobaxterme был интерфейс для этого

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

Ответ 26

Я думаю, что @sudo bangbang ответ должен быть принят.

Когда генерируете ключ ssh, вы просто нажимаете "Enter", чтобы пропустить ввод пароля, когда он предложит вам настроить пароль.

Это означает, что вам НЕ НУЖЕН пароль при использовании ключа ssh, поэтому помните, что при генерации ключа ssh НЕ вводите пароль, просто нажмите "Enter", чтобы пропустить его.