#git #spring-boot #ssh
#git #spring-boot #ssh
Вопрос:
Я пытался настроить сервер конфигурации в Spring Boot, для которого конфигурация будет обслуживаться из частного репозитория Github. Ранее конфигурация с именем пользователя и паролем хорошо работала для того же самого.
Как и в моем файле application.properties, я мог бы просто предоставить следующие детали:
spring:
cloud:
config:
server:
git:
uri: https://github.com/spring-cloud-samples/config-repo
username: trolley
password: strongpassword
Но, используя ту же конфигурацию, я получил электронное письмо от GitHub, в котором говорится, что аутентификация на основе имени пользователя и пароля устарела.
Вы можете посмотреть эту ссылку для получения более подробной информации об этом. Требования к аутентификации токенов для операций Git
Итак, я приступил к аутентификации на основе SSH. Я следовал руководству GitHub по созданию пары открытого и закрытого ключей и успешно добавил ее в свой репозиторий git. Вот ссылка на подключение к GitHub с помощью SSH
После этого я попробовал свое SSH-соединение, используя свой закрытый ключ, и получил успешный ответ.
Hi ankur19030! You've successfully authenticated, but GitHub does not provide shell access
Итак, это означает, что моя настройка подключения к GitHub с открытыми и закрытыми ключами завершена. Все, что осталось, это настроить свойства загрузки spring в приложении.yml-файл в spring boot
Вот моя конфигурация для того же:
spring:
cloud:
config:
server:
git:
uri: git@github.com:ankur19030/cosylab_config.git
ignoreLocalSshSettings: true
privateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
MY SSH PRIVATE KEY
-----END OPENSSH PRIVATE KEY-----
Теперь я получаю следующую ошибку при загрузке spring:
Description:
Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.cloud.config.server.git' to org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentProperties failed:
Reason: Property 'spring.cloud.config.server.git.privateKey' is not a valid private key
Action:
Update your application's configuration
Я не понимаю, почему закрытый ключ отображается как недействительный, когда я успешно протестировал ssh-соединение на терминале, используя тот же ключ.
Ответ №1:
Документация Spring Cloud содержит информацию, противоположную приведенному выше ответу: в ней говорится:
Предупреждение: При работе с ключами SSH ожидаемый закрытый ключ ssh должен начинаться с —— НАЧАТЬ ЗАКРЫТЫЙ КЛЮЧ RSA ——. Если ключ начинается с ——BEGIN OPENSSH PRIVATE KEY —— тогда ключ RSA не будет загружаться при запуске сервера spring-cloud-config. Ошибка выглядит следующим образом:
- Error in object 'spring.cloud.config.server.git': codes [PrivateKeyIsValid.spring.cloud.config.server.git,PrivateKeyIsValid]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.cloud.config.server.git.,]; arguments []; default message []]; default message [Property 'spring.cloud.config.server.git.privateKey' is not a valid private key]
Документированный пример генерации ключа RSA, который должен работать::
ssh-keygen -m PEM -t rsa -b 4096 -f ~/config_server_deploy_key.rsa
Ответ №2:
Как видно из этого руководства, формат закрытого ключа может быть старым PEM, а не OPENSSH.
Попробуйте восстановить ключ в старом формате, чтобы посмотреть, работает ли он:
ssh-keygen -P "" -m PEM -t rsa -f secondKey
Скопируйте содержимое secondKey
(предварительно протестировав его с ssh -Tv -i secondKey git@github.com
помощью)