Github: Нет доступных методов аутентификации

Я использую github и успешно добавил и синхронизировать файлы на моем ноутбуке в прошлом.

с недавнего времени я начал получать " PuTTY Fatal Error: Disconnected: Нет доступных методов проверки подлинности" после запуска:

git мастер создания тяги (или нажмите)

Однако

ssh git @github.com возвращает правильный ответ: ОШИБКА: Привет, имя пользователя! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке Соединение с github.com закрыто.

после копания в github я нашел этот morcel:

Нет доступных методов проверки подлинности Вы должны знать переменную среды GIT_SSH, которая используется git для поиска вашего ssh-говорящего клиента, если ssh не работает для вас. Установку git можно использовать plink.exe(через GIT_SSH) для выполнения аутентификации. Если это так, убедитесь, что у вас запущен файл pageant.exe, и ключ, который вы создали для загруженного github. Это дает ключ к plink.exe; без него произойдет ошибка выше.

не уверен, что такое plink.exe или peagant.exe.. и тот факт, что ssh git @github.com, кажется, правильно аутентифицирует, заставляет меня задаться вопросом, какое лучшее решение здесь... я, конечно, не хочу если это не необходимо, переустановите мою настройку.

Ответ 1

Вы можете создать файл с именем .profile в своем домашнем каталоге, для меня это C:\Users\[user]

Внутри этого файла поместите следующую строку кода:

GIT_SSH="/usr/bin/ssh.exe"

Это установит переменную среды GIT_SSH для использования клиента ssh, включенного в git.

Файл .profile script запускается при запуске командной строки Git Bash.

Изменить: Это мой .profile. Он запросит у вас пароль при первом запуске командной строки Git, а затем запомнит его с тех пор, пока вы не перезагрузите компьютер. Очень удобно, поэтому вам не нужно вводить пароль каждый раз, когда вы хотите что-то сделать.

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

Ответ 2

Использование TortoiseGit

TortoiseGit> Настройки... Сеть... Клиент SSH: C:\Program Files\Git\usr\bin\ssh.exe

Место меня меняется. На одном компьютере это было в C:\Program Files (x86)\Git\bin\ssh.exe

tortoisegit

Ответ 3

"... не знаю, что такое plink.exe или peagant.exe..."

Поскольку вы спрашиваете: plink и stant являются частью пакета PuTTY, который представляет собой реализацию SSH, которая поддерживает Linux и Windows и полностью доминирует в Windows.

SSH

Secure Shell (SSH) - это криптографический сетевой протокол для обеспечения безопасности передача данных. Он устанавливает безопасный канал по небезопасной сети в архитектуре клиент-сервер, соединяющей SSH-клиент приложение с SSH-сервером. Обычными приложениями являются удаленные ввод в командной строке, выполнение удаленной команды, но любая услуга сети могут быть защищены SSH.

если вы когда-либо использовали Telnet, это так (но более безопасно): он позволяет удаленно обращаться к командной строке bash хоста Linux.

PuTTY

PuTTY - это бесплатный эмулятор терминала с открытым исходным кодом, последовательная консоль и приложение для передачи сетевого файла. Он поддерживает несколько сетей протоколы, включая SCP, SSH, Telnet, rlogin...

В Windows это доминирующее программное обеспечение для удаленного доступа к командной строке хоста Linux по протоколу SSH (см. выше). В Windows расширения .exe предназначены для исполняемых файлов. Поэтому эти заметки о plink.exe и pageant.exe, вероятно, не применяются, если вы находитесь в Linux. PuTTY включает

Plink: интерфейс командной строки для контуров PuTTY

Pageant: агент аутентификации SSH для PuTTY, PSCP и Plink

От (http://en.wikipedia.org/wiki/Secure_Shell#Key_management)

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

Итак, github размещен на машине Linux и использует SSH для защиты соединения. SSH либо аутентифицируется с помощью паролей или ключей, многие хосты (github?) Только аутентифицируются с помощью ключей. Вы, похоже, пытаетесь аутентифицироваться с помощью ключа. Ключи и хосты не являются одними для одного: у вас могут быть два ключа для одного и того же хоста и/или двух хостов для одного и того же ключа, поэтому им необходимо управлять. Если вы находитесь в Windows, ваш сеанс SSH, вероятно, будет доступен через plink, и ваши ключи, вероятно, будут управляться с помощью Pageant.

Импортируйте необходимый ключ при загрузке Pageant. Если вы следуете инструкциям, которые сказали "импортировать свой ключ", и видели, что он сработал, но теперь он не работает, см. Глава 9: Использование Pageant для аутентификации.

Последний совет, если вы находитесь в Windows: у вас может быть несколько экземпляров набора PuTTY, установленных различными инструментами. Например, TortoiseGit устанавливает свои собственные.

Ответ 4

У меня возникла эта проблема, потому что мой GIT_SSH указывал на версию TortoiseSVN Plink.exe. Я изменил его, чтобы указать на версию TortoiseGit, перезапустил cmd и работал.

Я точно не помню, но версия TortoiseSVN могла быть 32-разрядной версией, а версия TortoiseGit была 64-разрядной (находится в Program Files, а не Program Files (x86)).

Дважды проверьте ваш GIT_SSH env var.

Я предпочитаю использовать git с обычным cmd.exe (конечно, в Console2)

Ответ 5

Для пользователей TortoiseGit в Windows

Первоначально я настраивал большинство своих репозиториев Github/Bitbucket с использованием URL-адресов репозитория SSH, поскольку (изначально) это был единственный удобный способ запретить TortoiseGit запрашивать пароль для каждого отдельного действия.

Но установка TortoiseGit таким образом всегда была мучительно болезненной. Каждый раз у меня уходили часы на правильную настройку, поскольку параметры установки по умолчанию никогда не работали (даже в 2016 году, блин!).

Но TortoiseGit теперь имеет лучшее управление паролями для HTTPS, и Github фактически рекомендует использовать HTTPS URL везде, где это возможно.

SSH URL: [email protected]:User/repo-name.git

HTTPS URL: https://github.com/User/repo-name.git

Преимущества HTTPS:

  • Нет управления или генерации ключей SSH
  • Нет необходимости постоянно работать pageant.exe (который запрашивает ваш пароль при каждом запуске)
  • Используя TortoiseGit из Австралии, я обнаружил, что клоны через HTTPS в 5-10 раз быстрее, чем SSH

Ответ 6

Если вы используете Pageant и получаете ошибку, описанную в вопросе, после перезагрузки компьютера (или иным образом закрытие и повторное открытие Pageant):

Ошибка может быть вызвана тем, что Pageant не загружает ваш SSH-ключ GitHub. По умолчанию Pageant НЕ загружает автоматически ключи из предыдущего сеанса при запуске.

Чтобы загрузить ключ:

  1. Открыть конкурс. (В Windows, если Pageant запущен, на панели задач появится значок. Дважды щелкните его.)
  2. Нажмите кнопку "Добавить ключ" и продолжите добавление существующего ключа GitHub SSH.

Чтобы избежать этой проблемы в будущем, вы можете настроить Pageant на автоматическую загрузку ключа при его запуске. (Pageant автоматически запросит у вас пароль, если ваш ключ защищен паролем.)

Шаги для этого (при условии, что вы уже настроили Pageant для запуска при запуске Windows):

  1. Найдите ярлык, используемый Windows для запуска Pageant при запуске Windows. (Он может находиться в папке "Автозагрузка", которую можно открыть с помощью "Пуск"> "Выполнить"> shell:startup)
  2. В диалоговом окне "Свойства ярлыка" добавьте полный путь и имя файла ключа SSH в поле "Target".

Ссылка и полная информация: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html

Ответ 7

Моя проблема заключалась в том, что я пытался использовать свое имя пользователя github. По-видимому, при использовании Github (или это Git вещь?), Если вы используете аутентификацию на основе ключа, вам нужно указать свое имя пользователя git.

Я не уверен, зачем вам вообще нужно имя пользователя - возможно, кто-то более осведомленный может объяснить это?

Ответ 8

На моем компьютере с Windows 7, запущенном Github для Windows, с помощью git версии 1.8.3.msysgit.0. Я обнаружил, что обновление моей переменной окружения системы GIT_SSH до C:\Program Files (x86)\Git\bin\ssh.exe показалось, что это трюк. Это также устранило мою проблему, связавшись с OpenShift git repo.

Ответ 9

Работала для меня в Windows 8: Переменная GIT_SSH указывала на plink.exe, Изменил его в системных настройках, чтобы указать на двоичный файл ssh, и это устранило проблему. Чтобы узнать полный путь к ssh, запустите:

where ssh

Ответ 11

Я столкнулся с этой же проблемой, однако решение GIT_SSH появилось для меня однажды. После перезагрузки компьютера я понял, что это что-то еще, поскольку я смог без проблем клонировать мои личные репозитории без использования Git Bash или командной строки, но не в Sublime Text 3 с плагином SublimeGit. Мое решение было простым и на самом деле было упомянуто @BlueRaja - Danny Pflughoeft, но я думал, что он может использовать какое-то направление;)

В принципе вам просто нужно отредактировать ~/.ssh/config и убедиться, что имя пользователя git. Вы также можете сказать ему, что используете специальный SSH-ключ для файла Github - My ~/.ssh/config выглядит следующим образом:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

У меня есть конкретный ключ для Github из-за количества других вещей, которые я делаю в течение всего моего дня, но если у вас есть только один, тогда обычно будет ~/.ssh/id_rsa.pub как Здесь объясняется Github.

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

Ответ 12

Я получил эту ошибку при использовании TortoiseGit для клонирования репозитория из GitHub. Исправлено нажатием "Load Putty Key" и выбором файла ключа (*.pkk) в диалоговом окне Git.

Ответ 13

Чтобы решить эту проблему, я так и сделал.

Я использовал Git Bash в Windows 10

Я запустил Pageant, нажал кнопку Добавить,

enter image description here

Перейдите в папку C:\Users\username\.ssh и выберите мой ключ

enter image description here

Затем я пытаюсь сделать git push, и на этот раз это сработало.

Ответ 15

У меня возникла эта проблема (прямой ssh ​​работал, но git pull failed) из-за моего git удаленного, не являющегося тем, кем я думал.

Да, да, я знаю, что это глупая ошибка, но это происходит, и это стоит проверить.

Используйте git remote -v