github: нет поддерживаемых методов аутентификации - PullRequest
90 голосов
/ 07 августа 2010

Я использую 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, кажется, правильно аутентифицируется, заставляет меня задуматься, какое лучшее решение здесьэто .. я, конечно, не хочу слишком усложнять мои настройки, если не нужно.

Ответы [ 14 ]

93 голосов
/ 01 октября 2010

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

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

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

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

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

Edit: Это мой .профиль. Он будет запрашивать ваш пароль при первом запуске командной строки 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
22 голосов
/ 03 августа 2015

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

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

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

tortoisegit

10 голосов
/ 13 марта 2015

"... не уверен, что такое 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#Key_management)

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

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

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

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

8 голосов
/ 11 октября 2011

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

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

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

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

6 голосов
/ 20 июня 2016

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

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

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

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

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
4 голосов
/ 15 июня 2016

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

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

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

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

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

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

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

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

4 голосов
/ 05 ноября 2013

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

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

2 голосов
/ 18 июля 2013

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

1 голос
/ 14 октября 2016

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

where ssh
1 голос
/ 14 июля 2015

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

...