Spring Cloud Config не может клонировать частный репозиторий битбакетов с помощью ключа ssh

Я использую Linux (arch), пытаюсь настроить Spring Cloud Config, следуя этому учебник с частным репозиторием git bitbucket с использованием ключа ssh, но я продолжаю получать сообщение об ошибке:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
[Request processing failed; nested exception is java.lang.IllegalStateException: Cannot
clone or checkout repository] with root cause com.jcraft.jsch.JSchException: Auth fail

Теперь, согласно туториалу, он должен работать:

Если вы не используете HTTPS и учетные данные пользователя, SSH также должен работать из коробки, когда вы храните ключи в каталогах по умолчанию (~ / .ssh), а uri указывает на расположение SSH, например «[email protected]: конфигурация / облачная-конфигурация». Важно, чтобы все ключи в ~ / .ssh / known_hosts были в формате "ssh-rsa". Новый формат «ecdsa-sha2-nistp256» НЕ поддерживается. Доступ к репозиторию осуществляется с помощью JGit, поэтому любая документация, которую вы найдете по этому поводу, должна быть применима. Параметры прокси-сервера HTTPS могут быть установлены в ~ / .git / config или таким же образом, как и для любого другого процесса JVM, через системные свойства (-Dhttps.proxyHost и -Dhttps.proxyPort).

У меня есть закрытый ключ ssh в папке ~ / .ssh с именем bitbucket-rsa, созданный с помощью команды ssh-keygen -t rsa -b 4096 -C "[email protected]". Открытый ключ был добавлен в Bitbucket правильно, так как я могу без проблем клонировать, извлекать и извлекать из репозитория из командной строки. Закрытый ключ был добавлен в ssh-agent, а bitbucket.org присутствует в файле known_hosts.

Вот файл bootstrap.yml в проекте config-service:

spring:
  application:
    name: config-service
  cloud:
    config:
      server:
        git:
          uri: "[email protected]:TarekSaid/my-private-repo.git"
server:
  port: 8888

Использование https с именем пользователя и паролем работает, но я все еще предпочитаю использовать ключи ssh, как мне заставить его работать?


person Tarek    schedule 10.10.2016    source источник


Ответы (1)


Наконец-то заработал!

этот вопрос: Как использовать настраиваемый Расположение ключа ssh в Spring Cloud Config указывало мне правильное направление. Я отладил класс JschConfigSessionFactory и обнаружил, что, когда имя пользователя и пароль не указаны, он извлекает конфигурацию из файла конфигурации по умолчанию в ~/.ssh/config.

Поэтому все, что мне нужно было сделать, это добавить в мой файл ~ / .ssh / config следующее:

~ / .ssh / config

Host bitbucket.org
  User TarekSaid
  Hostname bitbucket.org
  PreferredAuthentications publickey
  IdentitiesOnly yes
  IdentityFile ~/.ssh/bitbucket_rsa

Теперь работает.

person Tarek    schedule 12.10.2016
comment
Отличное решение и сработало для меня !!! Но небольшое примечание: ключ rsa должен быть сгенерирован без пароля, потому что в противном случае пароль должен быть указан в spring: cloud: config: server: git: passphrase: myprivatekeypassword И также похоже, что Host bitbucket.org IdentityFile ~/.ssh/private_rsa достаточно - person amisiuryk; 07.06.2019