Сбой USERAUTH с файлом закрытого ключа для конфигурации облака Github и Spring - PullRequest
6 голосов
/ 05 мая 2019

Я пытался использовать метод для использования закрытого ключа (который имеет фразу-пароль и добавляется в ssh-agent из файла) (согласно этой записи стека):

spring:
  cloud:
    config:
      server:
        git:
          uri: git@github.com-forApp:myorg/myrepo.git
          search-paths: '{application}'
          clone-on-start: true
          private_key_file: ~/.ssh/id_rsa

но я продолжаю получать

org.eclipse.jgit.api.errors.TransportException: git@github.com: myorg / myrepo.git: ошибка USERAUTH

Должен ли я сделать это точно так, как Док говорит с вставкой ключа в файл конфигурации, или можно просто как-то указать на файл ключа?

EDIT

На самом деле получается, что private_key_file совсем не нужен или игнорируется Spring. Но вам нужен раздел ~/.ssh/config, указывающий на закрытый ключ для использования:

Host github.com-forApp # used in spring uri 
       HostName github.com
       User git
       IdentityFile ~/.ssh/gitHubKey

1 Ответ

3 голосов
/ 15 мая 2019

Мне удалось воспроизвести ваше поведение и решить его следующим образом.Дайте мне знать, что вы думаете.

USERAUTH fail происходит потому, что вы не предоставляете фразу-пароль для закрытого ключа RSA. (password для обычной аутентификации и passphrase для закрытого ключа ssh)

spring:
  cloud:
    config:
      server:
        git:
          uri: git@github.com:myorg/myrepo.git
          search-paths: '{application}'
          clone-on-start: true
          passphrase: myprivatekeypassword

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

По умолчанию отправляется ~/.ssh/id_rsaво время GIT SSH Authentication (Проверка с помощью команды ssh -vT git@github.com. Вам не нужно указывать это в конфигурации. Кроме того, я не уверен, работает ли private_key_file или нет, так как я не вижу официальной документации для него.

Если у вас есть другой именованный файл RSA в .ssh, тогда я бы посоветовал создать файл конфигурации в ~/.ssh/config с подробной информацией о хосте github и идентифицировать файл.

Вот один пример.

Host github.com
    IdentityFile ~/.ssh/mygitid_rsa

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

...