github: нет поддерживаемых методов аутентификации

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

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

мастер происхождения git pull (или push)

тем не мение

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

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

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

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

18 ответов

Решение

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

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

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

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

Скрипт.profile запускается при запуске командной строки 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

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

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

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

TortoiseGit

"... не уверен, что такое plink.exe или peagant.exe..."

Поскольку вы спрашиваете: plink & pageant являются частью пакета 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)

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

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

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

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

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

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

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

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

Если вы используете 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

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

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

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

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

URL SSH: git@github.com:User/repo-name.git

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

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

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

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

where ssh

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

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

Я просто решил ту же проблему, установив для env var значение. Всего эти 3 буквы.

Я настоятельно не рекомендую пользователям Windows 10 устанавливать GIT_SSH к чему-нибудь другому, кроме просто sshstring ( без расширения ), чтобы максимизировать перекрестную совместимость между Windows Terminal, git bash, cmd и даже PHP Storm. Очевидно, вам понадобится ssh.exe в своем роде.

Я рекомендую вам установить Git для Windows и добавить C:\Program Files\Git\usr\bin вниз твой %PATH%

Если вы когда-нибудь переустановите Git для Windows, будьте готовы установить его снова, и при установке вам будет предложено указать «ссылку». Мало ли он знает, что "ssh" будет работать. Этот установщик в любом случае откажется от всего, кроме абсолютного пути.

Осмелюсь напомнить, что вы, очевидно, должны перезапустить консоль или IDE после изменения значения GIT_SSH и / или вашего пути.

Этот ответ относится к решению этой проблемы:«Не удается создать ssh» при подключении к Github, но ssh -T git@github.com работает?

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

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

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

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

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

У меня была аналогичная проблема после обновления GitExtensions до версии 3.3.0.7719

Каким-то образом он вернул мои настройки аутентификации, чтобы использовать PuTTY вместо OpenSSH.

В этой версии вот меню, которое я использовал для повторного включения OpenSSH:

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

Та же ошибка, другое решение, отмеченное здесь - проблема с подключением к GitHub в Windows, даже через PuTTY

В Windows 10, если вы выполнили обычную установку, включая Putty, ни одно из вышеперечисленных решений у меня не сработало, мне пришлось перейти в панель управления и, в частности, в системные переменные, изменив GIT_SSH на D:\Program Files\Git\usr\bin\ssh.exe (он был связан с plink.exe, и никакое количество изменений .profile или что-то еще не убедило его изменить это, только редактирование системных переменных).

Я столкнулся с той же проблемой, но решение GIT_SSH, похоже, мне помогло. После перезагрузки компьютера я понял, что это было что-то еще, поскольку я мог без проблем клонировать свои частные репозитории, используя Git Bash или командную строку, но не в Sublime Text 3 с плагином SublimeGit. Мое решение было простым и на самом деле это то, что BlueRaja - Danny Pflughoeft упомянул 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 как Гитхуб объясняет здесь.

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

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

У меня возникла эта проблема (прямое ssh сработало, но git pull не удалось) из-за того, что мой git remote не был тем, чем я думал.

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

использование git remote -v

Вы можете получить plink & pageant здесь: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Это замазка инструментов.

Другие вопросы по тегам