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


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

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

git pull origin master (или push)

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

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

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

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

14 85

14 ответов:

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

внутри этого файла добавьте следующую строку кода:

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

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

The .скрипт профиля выполняется при запуске командной строки Git Bash.

изменить: Это мой.профиль. Он попросит вас ввести пароль при первом запуске команды 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 (x86)\Git\bin\ssh.exe или C:\Program Files\Git\usr\bin\ssh.exe

tortoisegit

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

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

SSH

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

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

шпаклевка

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

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

Плинк: интерфейс командной строки для замазки задних концов

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

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

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

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

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

последний совет, если вы находитесь на Windows: у вас может быть несколько экземпляров PuTTY suite, установленных различными инструментами. 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 из конечно)

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

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

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

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

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

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

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

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

преимущества HTTPS являются:

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

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

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

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

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

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

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

  1. найдите ярлык, используемый Windows для запуска Pageant при запуске Windows. (Это может быть в папке автозагрузки, которую можно открыть с помощью Start > Run>shell:startup)
  2. в диалоговом окне свойств ярлыка добавьте полный путь и имя файла ключа SSH в поле" цель".

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

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

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

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

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

Я получил эту ошибку при использовании TortoiseGit для клонирования репозитория из GitHub. Исправлено нажатием кнопки "Загрузить шпатлевку" и выбором файла ключа (*.РПК)в диалоге git clone.

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

Это шпаклевочные инструменты.

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

where ssh

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

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

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