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
"... не уверен, что такое plink.exe или peagant.exe..."
Поскольку вы спрашиваете: plink & pageant являются частью пакета PuTTY, который представляет собой реализацию SSH, поддерживающую Linux & Windows и полностью доминирующую в Windows.
Secure Shell (SSH) - это криптографический сетевой протокол для защиты передачи данных. Он устанавливает безопасный канал через незащищенную сеть в архитектуре клиент-сервер, соединяя клиентское приложение SSH с сервером SSH. Обычные приложения включают удаленный вход в систему из командной строки, удаленное выполнение команд, но любой сетевой сервис может быть защищен с помощью SSH.
если вы когда-либо использовали Telnet, это так (но более безопасно): он позволяет вам удаленно обращаться к оболочке bash (командной строке) хоста Linux.
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 НЕ автоматически загружает ключи из предыдущего сеанса при запуске.
Чтобы загрузить ключ:
- Открыть конкурс. (В Windows, если Pageant запущен, он будет иметь значок на панели задач. Дважды щелкните по нему.)
- Нажмите кнопку "Добавить ключ" и продолжите добавление существующего ключа GitHub SSH.
Чтобы избежать этой проблемы в будущем, вы можете настроить Pageant на автоматическую загрузку ключа при его запуске. (Pageant автоматически запросит у вас пароль, если ваш ключ защищен паролем.)
Шаги для этого (при условии, что вы уже настроили Pageant для запуска при запуске Windows):
- Найдите ярлык, используемый Windows для запуска Pageant при запуске Windows. (Он может находиться в папке "Автозагрузка", которую можно открыть, выбрав "Пуск"> "Выполнить">
shell:startup
) - В диалоговом окне "Свойства" ярлыка добавьте полный путь и имя файла ключа 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
к чему-нибудь другому, кроме просто
ssh
string ( без расширения ), чтобы максимизировать перекрестную совместимость между 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
Это замазка инструментов.