Welcome! Please see the About page for a little more info on how this works.

0 votes
in tools.deps by

I added a git-dependency to a project's deps.edn file.
When trying to start the repl (and thus installing the dependencies) with "clj" dependency, installation failed with an error like the title says

Error building classpath. git@XXX:YYY/ZZZ.git: UnknownHostKey: XXX. RSA key fingerprint is YYYYY
org.eclipse.jgit.api.errors.TransportException: git@XXX:YYY/ZZZ.git: UnknownHostKey: XXX. RSA key fingerprint is YYYYY
...
Caused by: org.eclipse.jgit.errors.TransportException: git@XXX:YYY/ZZZ.git: UnknownHostKey: XXX. RSA key fingerprint is YYYYY
...
Caused by: com.jcraft.jsch.JSchException: UnknownHostKey: git@XXX:YYY/ZZZ.git: UnknownHostKey: XXX. RSA key fingerprint is YYYYY
...

The cause for this seems to be (as described in b6e2800560dbf7348dcc1965e9069863ef96e4f5 in jgit):
"""
...
JSch prefers ssh-rsa key type. When the remote server supports ssh-rsa

key type then this key type will be used even if the known_hosts file
contains a host key for that host, but with different key type.
This caused an unexpected UnknownHostKey error.

...
"""

The above mentioned commit in jgit will fix it hopefully.
tools.gitlibs still depends on an older version of jgit where this commit is not included.

So, please update the jgit version in tools.gitlibs and tools.deps.alpha, cascadingly.

As for now only a workaround exists (someone had this problem earlier, too, obviously):
https://codehopper.nl/2018/09/27/clojure-gitlab-deps/
(basically: modify your known_hosts and ssh-config-file, which is very bad in my opinion)

Full (censored) trace:
Cloning: git@XXXXXX.com:YYYYY/ZZZZ.git
Error building classpath. git@XXXXXX.com:YYYYY/ZZZZ.git: UnknownHostKey: XXXXXX. RSA key fingerprint is FF:II:NN:GG:EE:RR:PP:RR:II:NN:TT
org.eclipse.jgit.api.errors.TransportException: git@XXXXXX.com:YYYYY/ZZZZ.git: UnknownHostKey: XXXXXX. RSA key fingerprint is FF:II:NN:GG:EE:RR:PP:RR:II:NN:TT

at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:248)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:89)
at clojure.tools.gitlibs.impl$call_with_auth.invokeStatic(impl.clj:49)
at clojure.tools.gitlibs.impl$call_with_auth.invoke(impl.clj:41)
at clojure.tools.gitlibs.impl$git_clone_bare.invokeStatic(impl.clj:71)
at clojure.tools.gitlibs.impl$git_clone_bare.invoke(impl.clj:68)
at clojure.tools.gitlibs.impl$ensure_git_dir.invokeStatic(impl.clj:110)
at clojure.tools.gitlibs.impl$ensure_git_dir.invoke(impl.clj:100)
at clojure.tools.gitlibs$resolve.invokeStatic(gitlibs.clj:33)
at clojure.tools.gitlibs$resolve.invoke(gitlibs.clj:29)
at clojure.tools.gitlibs$procure.invokeStatic(gitlibs.clj:47)
at clojure.tools.gitlibs$procure.invoke(gitlibs.clj:41)
at clojure.tools.deps.alpha.extensions.git$eval894$fn__896.invoke(git.clj:41)
at clojure.lang.MultiFn.invoke(MultiFn.java:238)
at clojure.tools.deps.alpha$expand_deps.invokeStatic(alpha.clj:177)
at clojure.tools.deps.alpha$expand_deps.invoke(alpha.clj:161)
at clojure.tools.deps.alpha$resolve_deps.invokeStatic(alpha.clj:224)
at clojure.tools.deps.alpha$resolve_deps.invoke(alpha.clj:206)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invokeStatic(make_classpath.clj:59)
at clojure.tools.deps.alpha.script.make_classpath$create_classpath.invoke(make_classpath.clj:52)
at clojure.tools.deps.alpha.script.make_classpath$run.invokeStatic(make_classpath.clj:70)
at clojure.tools.deps.alpha.script.make_classpath$run.invoke(make_classpath.clj:64)
at clojure.tools.deps.alpha.script.make_classpath$_main.invokeStatic(make_classpath.clj:109)
at clojure.tools.deps.alpha.script.make_classpath$_main.doInvoke(make_classpath.clj:84)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
at clojure.main$main.invokeStatic(main.clj:424)
at clojure.main$main.doInvoke(main.clj:387)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.main.main(main.java:37)

Caused by: org.eclipse.jgit.errors.TransportException: git@XXXXXX.com:YYYYY/ZZZZ.git: UnknownHostKey: XXXXXX. RSA key fingerprint is FF:II:NN:GG:EE:RR:PP:RR:II:NN:TT

at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:172)
at clojure.tools.gitlibs.impl.proxy$org.eclipse.jgit.transport.JschConfigSessionFactory$ff19274a.getSession(Unknown Source)
at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140)
at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:280)
at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:170)
at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137)
at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123)
at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1269)
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:237)
... 35 more

Caused by: com.jcraft.jsch.JSchException: UnknownHostKey: XXXXXX. RSA key fingerprint is FF:II:NN:GG:EE:RR:PP:RR:II:NN:TT

at com.jcraft.jsch.Session.checkHost(Session.java:805)
at com.jcraft.jsch.Session.connect(Session.java:345)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:126)
... 43 more

2 Answers

0 votes
by

Comment made by: wontheone1

I am suffering from the same problem.

0 votes
by
Reference: https://clojure.atlassian.net/browse/TDEPS-104 (reported by alex+import)
...