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, я сделал следующий:
-
ssh-add -K ~/.ssh/id_rsa
Примечание: измените путь, где ваш ключ id_rsa находится. -
ssh-add -A
-
создайте (или отредактируйте, если он существует) следующее :
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-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
вот так:
-
узнайте, установлен ли он у вас.
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
Примечание: вам придется делать это снова после каждого перезапуска.
решение здесь.
Я хотел бы добавить ответ для тех, кто все еще может потребоваться ввести пароль, потому что они установили 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" и пароль как пароль для входа в систему
Если вы использование 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 клон 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]