Неверные ключи SSH на GitKraken

Итак, у меня есть git-репо где-то на сервере в другой комнате, и я раньше использовал SourceTree, но это просто раздражает проблемой index.lock, и, очевидно, это самая распространенная проблема, с которой сталкивается большинство разработчиков SourceTree. Хотя я обнаружил, что все будет исправлено, если я подожду от нескольких минут до половины дня, но у меня нет времени ждать, и я думаю, что это вообще отрицает цель использования git client.

Но это не про SourceTree... Итак, я нашел GitKraken, и он выглядит круто, и у меня никогда не было проблем с index.lock. Единственная проблема в том, что я не могу нажать и вытащить на свой сервер в другой комнате. Я настроил мои ключи SSH и это. Я могу нажать / вытащить на учетную запись github / bitbucket, но не на следующую комнату. Если вы когда-либо сталкивались с такими проблемами, или если у вас есть хоть немного идей о том, как я могу решить мою проблему, пожалуйста, дайте мне знать. Я уже связался со службой поддержки, но отклик очень скудный.

17 ответов

Кажется, что на моем Mac, если я не запускаю ssh-add -k ~/.ssh/id_rsa тогда я получаю ошибки о плохом ключе ssh.

Это также, кажется, работает на Ubuntu (18.04).

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

Это то, что я сделал, чтобы решить это с самого начала, сидя на MacOS.

  1. Бегать ssh-keygen генерировать ключи. Я предоставил пароль.
  2. Бегать ssh-add -K ~/.ssh/id_rsa чтобы сохранить мою личность внутри моего локального агента SSH. Это важно. Обратите внимание, что это прописная буква -K, что означает, что я тоже хочу сохранить свою парольную фразу внутри локального агента ssh, это приведет к тому, что она сохранит мою парольную фразу в цепочке для ключей, поэтому мне не нужно вводить ее повторно все время, очень аккуратный!
  3. Внутри Gitkraken перейдите в "Настройки -> Аутентификация... -> Общие".
  4. Проверьте "Использовать локальный агент SSH". Это скажет Gitkraken использовать моего агента на шаге 2. Если вы этого не сделаете, Gitkraken будет использовать свой собственный ssh-агент, и я думаю, что это является причиной проблемы для большинства людей.
  5. Добавьте свой ~/.ssh/id_rsa.pub открытый ключ к вашему серверу (bitbucket.org, azure devops, github или w/e).
  6. Теперь, когда вы делаете git fetch из терминала или сделать git fetch из Gitkraken, это должно сработать. Gitkraken будет использовать ваш ssh агент, который мы настроили для успешной аутентификации.

Надеюсь, это поможет некоторым.

Обновление: я также должен был включить ssh-add -K ~/.ssh/id_rsa внутри моего ~/.bash_profile чтобы он загрузился автоматически, в противном случае вам придется запускать эту команду при каждом перезапуске компьютера.

В macOS у меня была пара Закрытый / Открытый ключ, и GitKraken успешно использовал ее для передачи в репозиторий bitbucket. Файл открытого ключа ~/.ssh/id_rsa.pub формат похож на ответ Джоша Паттерсона:

ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==

Я создал второй репозиторий Bitbucket. В какой-то момент gitKraken больше не мог продвигаться к первому репо. Я все еще мог нажать толчок к первому репо из командной строки терминала, вводя фразу-пароль вручную.

GitKraken сказал: "Сконфигурированный ключ SSH имеет недопустимый формат. Пожалуйста, убедитесь, что ваш ключ действителен и является ключом типа RSA".

Подобно ответу Coming Sun, я перешел к GitKraken Preferences/Authentication/General. В отличие от ответа Coming Sun, у меня уже был закрытый / открытый ключ, и я не хотел создавать новую пару. Вместо этого я выбрал "Использовать локальный агент SSH". Это исправил GitKraken для меня.

  1. GitKraken -> Настройки -> Аутентификация -> Создать новый закрытый / открытый ключ;
  2. добавьте новый открытый ключ на ваш git-сервер.

Я начал работать, используя комбинацию ответа gabeios, а также включив и выключив опцию "использовать локальный агент ssh" (настройки gitkraken> аутентификация> "использовать локальный агент ssh").

Я выключил его и попробовал gabeios answer, но он не сработал, но затем включил его и попытался снова с gabeios answer. По какой-то причине со мной сработало какое-то сочетание. Я на маке. Надеюсь, поможет.

Поскольку предыдущие ответы не сработали для меня, вот еще один быстрый и простой совет, который может сработать:

  1. Перейдите в настройки/интеграция/github.
  2. Вы найдете ключ ssh, например «Gitkraken Ubuntu».
  3. Будет написано что-то вроде «неопубликовано» -> нажмите «добавить на GitHub».

Вуаля! Вы авторизованы

Таким образом, в случае, если это помогает кому-то другому (или мне, когда я забыл), похоже, что GIT Kraken очень разборчив в своем формате открытого ключа и НЕ поддерживает то, что я думаю о стандартном формате. Я обычно вижу ключи, которые выглядят так:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20181204"
AAAAB3NzaC1yc2EAAAABJQAAAQEA5kpsxjtSZ4kMyKIBy0ASQShN/BSAEa7d4lrL
...
hA2TX0L2fLKDkpzCngkDgGbLDxj5dXTN4gpnZdr7lzMciFQu0uhfTLmeYgi1nFOi
KfJ+cQWg3uOHQ0zd8/2GyvfARWy3nZDFoLSQTrbErkX8swZ0Ew==
---- END SSH2 PUBLIC KEY ----

Гит Кракен, кажется, настаивает на этом формате:

ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==

Вы можете видеть, что это "тот же" ключ, но он должен быть в более простом формате, чтобы Git Kraken был доволен им.

Спасибо джош

Настройки... > Аутентификация

Мне просто пришлось переключиться на

[ ] Использовать локальный агент SSH

Вместо использования пути к моему локальному ssh

Ответ Габейо работает. Чтобы не звонить ssh-add -K ~/.ssh/id_rsa в терминале каждый раз его можно добавить в файл профиля.

Вы можете положить его на ~/.bash_profile:

ставить ssh-add -K ~/.ssh/id_rsa внутри вашего~/.bash_profile

Но для этого необходимо открыть терминал.

В моем случае я добавил его в /etc/profile, Добавьте строку, ssh-add -K ~/.ssh/id_rsa в нижней части /etc/profile, Вот инструкции в терминале:

  • Изменить разрешение файла, $sudo chmod 644 /etc/profile
  • Отредактируйте файл, $sudo nano /etc/profile
  • Добавьте эту строку внизу файла, ssh-add -K ~/.ssh/id_rsa,
  • Закройте и сохраните файл
  • Перезагрузка.

Это работает для меня, не открывая терминал каждый раз. Надеюсь, это поможет.

Если вы пытаетесь получить доступ к репозиторию в Github, но это не работает.

Это сработало для меня:

Во-первых, посмотрите, есть ли у вас "доступ для записи" в вашем репозитории

(Setting -> Manage Access)

Если ошибка не исчезнет:

  1. Отключить аккаунт Github в Gitkraken

    (File-> Preferences -> Authentication -> Github -> Disconnect)

  2. Отменить доступ к Gitkraken в Github

    (Settings-> Applications -> Authorized Oauth Apps -> Gitkraken -> Revoke)

  3. Подключите снова Gitkraken к Github

    (make sure that you give permission to all your repositories)

Надеюсь, это будет вам полезно:)

У меня есть много ключей для нескольких проектов, и идентификационные данные уже отлично управляются в ~/.ssh/config и / или ~/.gitconfig без желания отслеживать / ссылаться на них еще в одном месте!

Пока что для большинства рабочих ответов требуется, чтобы мои ключи и определения были в ~/.ssh/config а затем также добавив ссылку / вызов в ssh-add -K ~/.ssh/... в ~/.bash_profile и / или ~/.profile ни чего не идеал.

Я собирался создать функцию, чтобы зайти ~/.bash_profile и / или ~/.profile для перебора всех ключей и вложенных папок в ~/.ssh/*/... так что, по крайней мере, мне не нужно помнить о добавлении туда новых ключей.

Затем я нашел здесь этот прекрасный подход, где все, что мне нужно сделать, это добавить дополнительный AddKeysToAgent yes инструкция в ~/.ssh/config для любых учетных данных, которые я хочу автоматически добавить в ssh-agent:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/[your-secure-ssh-key-name]

ПРИМЕЧАНИЕ: для этого все равно потребуется запустить ssh-add -K ~/.ssh/[your-secure-ssh-key-name]хотя бы один раз, чтобы сохранить пароль в связке ключей. В противном случае вы можете опустить UseKeychain yes и вам будет предложено ввести пароль при использовании ключей.

Это будет сохраняться при перезагрузках и просто "волшебным образом сработает" для CLI, а также для таких приложений, как GitKraken.

В UseKeychain yesинструкция также может быть опущена, когда ключ не имеет пароля, и вам НЕ нужно применять эту инструкцию ко всем хостам. Вот пример конкретного хоста с подстановочным знаком поддомена для захвата нескольких проектов, размещенных одним и тем же провайдером:

Host project1.myrepo.com
 User git
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/myrepo.com/project1
 AddKeysToAgent yes
 UseKeychain no

Host *.myrepo.com
 User git
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/myrepo.com/[your-secure-ssh-key-name]
 AddKeysToAgent yes
 UseKeychain yes

Host git-codecommit.*.amazonaws.com
 User ABC1234DEFGHI1234
 IdentityFile ~/.ssh/[your-secure-ssh-key-name]
 AddKeysToAgent yes

Host *
  AddKeysToAgent no
  UseKeychain no
  IdentityFile ~/.ssh/id_rsa

Это относится к пользователям Windows. Моя конфигурация Win 10 с GitKraken v8.2. Это может работать на других конфигурациях, однако ymmv.

  1. Установите Putty и Pageant, если они еще не установлены. Можно найти здесь: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  2. Запустите Pageant, перейдя в папку установки и дважды щелкнув по ней. Либо откройте командную строку и введите «Pageant».
  3. В системном трее найдите значок Pageant, щелкните его правой кнопкой мыши и выберите «Добавить ключ». Укажите его на файл PPK, который у вас есть.
  4. В GitKraken перейдите в «Настройки» -> «SSH» и выберите «Использовать локальный агент SSH». Теперь он будет использовать Pageant

Теперь у вас должна быть возможность клонировать/отправлять/извлекать на удаленные серверы с помощью SSH. Для самостоятельных серверов git обязательно используйте правильный URL-адрес в формате ssh://{user}@{host}/{repo}, где "repo" — это полный путь на хост-компьютере.

Убедитесь, что ваш пульт установлен правильно. Gitkraken позволит вам клонировать, вставив команду "git clone", но он ошибочно установит это в качестве источника

Какой бардак! Эти ответы распространяются вокруг решения, и некоторые из них вводят вас в улей, но кракены поддержки GitKraken должны следить за такого рода проблемами и вмешиваться с полным, надежным и проверяемым пониманием, к которому мы можем возвращаться каждый раз, когда мы запутаемся!

Перепробовав все ответы, даже один от меня, который не сработал позже, когда у меня снова возникла проблема, я заметил, что проблема связана не с ключами SSH, а с заданным параметром в пользовательском интерфейсе GitKraken (последняя версия на момент написания: 7.3.2)

Даже после успешного добавления ключей SSH попытка клонирования с использованием следующего параметра: Файл> Клонировать репо> Клонировать с URL (с использованием SSH или HTTPS) приведет к этой ошибке:

Clone Failed
C:\path-to-folder Conf‌igured SSH key is invalid. Please conf‌irm that it is properly associated with your Git provider.

Однако... он работает со следующей опцией: Файл> Клонировать репозиторий> Bitbucket.org > Репозиторий для клонирования (выберите один из репозиториев в учетной записи).

Successfully cloned repo 'my_repo'

Разве не должна была работать опция клонирования с URL-адресом?

Ну что ж...

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

  1. Генерация нового SSH-ключа

Для начала нам нужны ключи:

      ssh-keygen -t ed25519-sk -C "your_email@example.com"

Я не добавлял их в ssh-agent, вместо этого выбрал файлы прямо на GitKraken

  1. Добавьте новый ключ SSH в свою учетную запись GitHub.

  2. Наконец, проверьте ваше соединение.

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

Поскольку kraken генерирует свои собственные файлы под именем «kraken-rsa», агент ssh не сможет найти файлы, потому что ищет файлы ssh-rsa.

Поэтому дважды проверьте имена файлов kraken-rsa.

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