本文介紹了Spring Cloud Config無(wú)法使用ssh密鑰克隆私有Bitbucket存儲(chǔ)庫(kù)的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我在Linux(ARCH)上,嘗試使用ssh密鑰通過(guò)私有的Bitbucket git存儲(chǔ)庫(kù)tutorial配置Spring Cloud Config,但一直收到錯(cuò)誤:
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
現(xiàn)在,根據(jù)教程,它應(yīng)該可以工作:
如果您不使用HTTPS和用戶憑據(jù),則當(dāng)您將密鑰存儲(chǔ)在默認(rèn)目錄(~/.ssh)中并且URI指向SSH位置(例如”[email protected]:configuration/cloud-configuration”.)時(shí),SSH也應(yīng)該開箱即用~/.ssh/KNOWN_HOSTS中的所有密鑰都采用”ssh-rsa”格式,這一點(diǎn)很重要。不支持新的”ecdsa-sha2-nistp256″格式。存儲(chǔ)庫(kù)是使用JGit訪問(wèn)的,因此您在上面找到的任何文檔都應(yīng)該適用。HTTPS代理設(shè)置可以在~/.git/config中設(shè)置,也可以通過(guò)系統(tǒng)屬性(-Dhttps.proxyHost和-Dhttps.proxyPort)以與任何其他JVM進(jìn)程相同的方式設(shè)置。
我在~/.ssh文件夾中確實(shí)有一個(gè)名為Bitbucket-rsa的私有ssh密鑰,它是使用命令ssh-keygen -t rsa -b 4096 -C "[email protected]"
創(chuàng)建的。公鑰被正確地添加到Bitbucket中,因?yàn)槲夷軌驈拿钚泻翢o(wú)故障地從存儲(chǔ)庫(kù)克隆、拉入和推送。私鑰已添加到ssh-agent,且bitbucket.org位于KNOWN_HOSTS文件中。
下面是config-service項(xiàng)目中的bootstrap.yml:
spring:
application:
name: config-service
cloud:
config:
server:
git:
uri: "[email protected]:TarekSaid/my-private-repo.git"
server:
port: 8888
使用帶有用戶名和密碼的https可以工作,但我仍然喜歡使用ssh密鑰,如何才能使其工作?
推薦答案
終于成功了!
這個(gè)問(wèn)題:How to use a custom ssh key location with Spring Cloud Config給我指明了正確的方向。我調(diào)試了JschConfigSessionFactory
類,發(fā)現(xiàn)當(dāng)未提供用戶名和密碼時(shí),它會(huì)從~/.ssh/config
中的默認(rèn)配置文件獲取配置。
因此,我所要做的就是將以下內(nèi)容添加到我的~/.ssh/config文件中:
~/.ssh/config
Host bitbucket.org
User TarekSaid
Hostname bitbucket.org
PreferredAuthentications publickey
IdentitiesOnly yes
IdentityFile ~/.ssh/bitbucket_rsa
現(xiàn)在可以工作了。
這篇關(guān)于Spring Cloud Config無(wú)法使用ssh密鑰克隆私有Bitbucket存儲(chǔ)庫(kù)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,