我试图使用使用私钥的方法(该私钥具有密码,并已从文件添加到ssh-agent中)(根据this堆栈帖子):
spring:
cloud:
config:
server:
git:
uri: git@github.com-forApp:myorg/myrepo.git
search-paths: '{application}'
clone-on-start: true
private_key_file: ~/.ssh/id_rsa
但是我不断得到
org.eclipse.jgit.api.errors.TransportException: git@github.com:myorg / myrepo.git:USERAUTH失败
将密钥粘贴到配置文件中是否必须完全像doc says那样做,还是可以以某种方式仅指向密钥文件?
编辑
实际上,事实证明private_key_file
根本不需要,也没有被Spring忽略。但是您需要使用指向私钥的~/.ssh/config
部分:
Host github.com-forApp # used in spring uri
HostName github.com
User git
IdentityFile ~/.ssh/gitHubKey
答案 0 :(得分:3)
我能够复制您的行为,并通过以下方法解决了它。让我知道你的想法。
USERAUTH fail
之所以发生,是因为您没有为RSA私钥提供密码。(password
代表Basic Auth,passphrase
代表ssh私钥)
spring:
cloud:
config:
server:
git:
uri: git@github.com:myorg/myrepo.git
search-paths: '{application}'
clone-on-start: true
passphrase: myprivatekeypassword
如果您不愿意在配置中保留私钥密码,则可以不使用密码重新生成RSA密钥,但是我不确定它是否满足您的安全要求。
默认情况下,在GIT SSH身份验证期间发送~/.ssh/id_rsa
(使用命令ssh -vT git@github.com
测试。您无需在配置中指定它。而且,我不确定private_key_file
是否有效还是没有,因为我没有任何官方文档。
如果您在.ssh
下具有不同的命名RSA文件,那么我建议在~/.ssh/config
下使用github主机详细信息创建配置文件并识别文件。
这里是一个例子。
Host github.com
IdentityFile ~/.ssh/mygitid_rsa
请检查this堆栈答案以获取更多详细信息,这些详细信息需要配置在config中提供私钥文件路径。