我想对此进行进一步的改动,这有望消除在 YAML 文件(或 env 变量)中弄乱 SSH 密钥的需要,这通常是一个坏主意。
这围绕着 SSH 配置文件,所以如果应用程序无权访问它,或者无法修改它,这将不起作用(但我想不出任何适用的实际情况,包括云部署:AWS Cloudformation 模板或 Kubernetes ConfigMaps 都可以提供有用的解决方法)。
这个问题(大部分)围绕着(相当莫名其妙的)无法在 Spring Config 应用程序属性中指定私钥文件的限制。
在您的~/.ssh/config
文件中,您可以添加以下内容:
Host git-config
HostName github.myserver.example.com
User someone
IdentityFile /path/to/private_key
(我需要连接到私有 GitHub Enterprise 服务器,并且与 SSH 密钥关联的用户与正在运行的应用程序服务器不同:这工作得很好;如果不是这种情况,只需使用github.com
,HostName
并省略User
) _
然后,而不是使用实际的 GitHub URI,例如:
git@github.myserver.example.com:my-team/config-properties-demo.git
您替换git-config
主机:
spring:
cloud:
config:
server:
git:
uri: git@git-config:my-team/config-properties-demo.git
strictHostKeyChecking: false
它确实有点麻烦,但相对容易自动化。一个更可取的选项是 Spring Config 添加另一个指向私钥材料的选项:
spring:
cloud:
config:
server:
git:
uri: git@github.myserver.example.com:my-team/config-properties-demo.git
user: someone
private_key_file: /path/to/private_key
strictHostKeyChecking: false
我想这是“增强请求”部分的一个......