You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud Config Server连接Bitbucket SSH报Base64非法字符2d错误

Spring Cloud Config SSH连接Bitbucket仓库报错排查

配置信息

spring.cloud.config.server.git.uri=git@prod-cvs2.test.com:7999/properties.git
spring.cloud.config.server.git.ignoreLocalSshSettings=true
spring.cloud.config.server.git.hostKey=prod-cvs2.test.com
spring.cloud.config.server.git.hostKeyAlgorithm=ssh-rsa
spring.cloud.config.server.git.strictHostKeyChecking=false
spring.cloud.config.server.git.passphrase=Secret123

spring.cloud.config.server.git.privateKey=-----BEGIN RSA PRIVATE KEY-----\n\
Proc-Type: 4,ENCRYPTED\n\
DEK-Info: AES-128-CBC,947ABEEB0FE4132D7074662CE7FF5068\n\
\n\
THE_KEY\n\
-----END RSA PRIVATE KEY-----

spring.cloud.config.server.git.default-label=master

错误日志

Caused by: org.apache.sshd.common.SshException: DefaultConnectFuture[git@prod-cvs2.test.com/162.134.121.63:22]: Failed (IllegalArgumentException) to execute: Illegal base64 character 2d
    at org.apache.sshd.common.future.AbstractSshFuture.lambda$verifyResult$1(AbstractSshFuture.java:131) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.common.future.AbstractSshFuture.formatExceptionMessage(AbstractSshFuture.java:185) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.common.future.AbstractSshFuture.verifyResult(AbstractSshFuture.java:130) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.client.future.DefaultConnectFuture.verify(DefaultConnectFuture.java:42) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.client.future.DefaultConnectFuture.verify(DefaultConnectFuture.java:34) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.eclipse.jgit.transport.sshd.SshdSession.connect(SshdSession.java:191) ~[org.eclipse.jgit.ssh.apache-5.13.1.202206130422-r.jar:5.13.1.202206130422-r]
    at org.eclipse.jgit.transport.sshd.SshdSession.connect(SshdSession.java:142) ~[org.eclipse.jgit.ssh.apache-5.13.1.202206130422-r.jar:5.13.1.202206130422-r]
    at org.eclipse.jgit.transport.sshd.SshdSession.connect(SshdSession.java:99) ~[org.eclipse.jgit.ssh.apache-5.13.1.202206130422-r.jar:5.13.1.202206130422-r]
    at org.eclipse.jgit.transport.sshd.SshdSessionFactory.getSession(SshdSessionFactory.java:235) ~[org.eclipse.jgit.ssh.apache-5.13.1.202206130422-r.jar:5.13.1.202206130422-r]
    ... 136 common frames omitted
Caused by: java.lang.IllegalArgumentException: Illegal base64 character 2d
    at java.base/java.util.Base64$Decoder.decode0(Base64.java:743) ~[na:na]
    at java.base/java.util.Base64$Decoder.decode(Base64.java:535) ~[na:na]
    at java.base/java.util.Base64$Decoder.decode(Base64.java:558) ~[na:na]
    at org.apache.sshd.common.config.keys.PublicKeyEntryDataResolver.decodeEntryKeyData(PublicKeyEntryDataResolver.java:53) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.common.config.keys.PublicKeyEntry.parsePublicKeyEntry(PublicKeyEntry.java:408) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.common.config.keys.AuthorizedKeyEntry.parseAuthorizedKeyEntry(AuthorizedKeyEntry.java:318) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.apache.sshd.common.config.keys.AuthorizedKeyEntry.parseAuthorizedKeyEntry(AuthorizedKeyEntry.java:273) ~[sshd-osgi-2.7.0.jar:2.7.0]
    at org.springframework.cloud.config.server.ssh.PropertyBasedSshSessionFactory$2.getHostKey(PropertyBasedSshSessionFactory.java:151) ~[spring-cloud-config-server-3.1.5.jar:3.1.5]
    at org.springframework.cloud.config.server.ssh.PropertyBasedSshSessionFactory$2.lookup(PropertyBasedSshSessionFactory.java:122) ~[spring-cloud-config-server-3.1.5.jar:3.1.5]
    at org.eclipse.jgit.internal.transport.sshd.JGitServerKeyVerifier.lookup(JGitServerKeyVerifier.java:72) ~[org.eclipse.jgit.ssh.apache-5.13.1.202206130422-r.jar:5.13.1.202206130422-r]
    at org.eclipse.jgit.internal.transport.sshd.JGitClientSession.resolveAvailableSignaturesProposal(JGitClientSession.java:275) ~[org.eclipse.jgit.ssh.apache-5.13.1.202206130422-r.jar:5.13.1.202206130422-r]
    at org.apache.sshd.common.session.helpers.AbstractSession.resolveAvailableSignaturesProposal(AbstractSession.java:2356) ~[sshd-osgi-2.7.0.jar:2.7.0]

问题分析

错误核心是Illegal base64 character 2d,ASCII码2d对应字符-,说明系统尝试对包含-的内容做Base64解码时失败。问题出在spring.cloud.config.server.git.hostKey配置项:

当前配置的hostKey=prod-cvs2.test.com是服务器主机名,但该配置项要求填写Bitbucket服务器SSH公钥的Base64编码部分,而非主机名。系统将主机名当作公钥Base64内容解码,因包含-字符触发错误。

解决方案

1. 获取正确的Bitbucket服务器SSH公钥

在本地终端执行命令获取服务器SSH公钥:

ssh-keyscan prod-cvs2.test.com 2>/dev/null | grep ssh-rsa

执行结果示例:

prod-cvs2.test.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...

2. 修改hostKey配置

将spring.cloud.config.server.git.hostKey的值替换为上述结果中ssh-rsa之后的Base64部分(即AAAAB3NzaC1yc2EAAAADAQABAAABAQC...这段,不含主机名和ssh-rsa前缀)。

3. 可选简化配置

若不需要校验主机密钥,可直接移除hostKey和hostKeyAlgorithm配置项,保留已设置的strictHostKeyChecking=false,系统会自动跳过密钥校验,也能避免该错误。

修改后的配置示例(使用正确hostKey):

spring.cloud.config.server.git.uri=git@prod-cvs2.test.com:7999/properties.git
spring.cloud.config.server.git.ignoreLocalSshSettings=true
spring.cloud.config.server.git.hostKey=AAAAB3NzaC1yc2EAAAADAQABAAABAQC...
spring.cloud.config.server.git.hostKeyAlgorithm=ssh-rsa
spring.cloud.config.server.git.strictHostKeyChecking=false
spring.cloud.config.server.git.passphrase=Secret123

spring.cloud.config.server.git.privateKey=-----BEGIN RSA PRIVATE KEY-----\n\
Proc-Type: 4,ENCRYPTED\n\
DEK-Info: AES-128-CBC,947ABEEB0FE4132D7074662CE7FF5068\n\
\n\
THE_KEY\n\
-----END RSA PRIVATE KEY-----

spring.cloud.config.server.git.default-label=master

同时注意privateKey中的换行符\n\需确保私钥内容能被正确解析。


内容的提问来源于stack exchange,提问作者Sweta Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:25:00