From 6fe66b738250adf8c830df824a43c69c4a1d0e45 Mon Sep 17 00:00:00 2001 From: Thomas Wolf Date: Tue, 19 Oct 2021 09:07:14 +0200 Subject: [PATCH] Set JSch global config values only if not set already Bug: 576604 Change-Id: I04415f07bf2023bc8435c097d1d3c65221d563f1 Signed-off-by: Thomas Wolf (cherry picked from commit f8b0c00e6a8f5628babff6dd37254a21589b6e44) --- .../transport/JschConfigSessionFactory.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java index 88202dd2d..88b8243e3 100644 --- a/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java +++ b/org.eclipse.jgit.ssh.jsch/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java @@ -40,6 +40,7 @@ import org.eclipse.jgit.errors.TransportException; import org.eclipse.jgit.internal.transport.jsch.JSchText; import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -398,14 +399,26 @@ protected JSch getJSch(OpenSshConfig.Host hc, FS fs) throws JSchException { */ protected JSch createDefaultJSch(FS fs) throws JSchException { final JSch jsch = new JSch(); - JSch.setConfig("ssh-rsa", JSch.getConfig("signature.rsa")); //$NON-NLS-1$ //$NON-NLS-2$ - JSch.setConfig("ssh-dss", JSch.getConfig("signature.dss")); //$NON-NLS-1$ //$NON-NLS-2$ + // See https://bugs.eclipse.org/bugs/show_bug.cgi?id=537790 and + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=576604 + copyGlobalConfigIfNotSet("signature.rsa", "ssh-rsa"); //$NON-NLS-1$ //$NON-NLS-2$ + copyGlobalConfigIfNotSet("signature.dss", "ssh-dss"); //$NON-NLS-1$ //$NON-NLS-2$ configureJSch(jsch); knownHosts(jsch, fs); identities(jsch, fs); return jsch; } + private void copyGlobalConfigIfNotSet(String from, String to) { + String toValue = JSch.getConfig(to); + if (StringUtils.isEmptyOrNull(toValue)) { + String fromValue = JSch.getConfig(from); + if (!StringUtils.isEmptyOrNull(fromValue)) { + JSch.setConfig(to, fromValue); + } + } + } + private static void knownHosts(JSch sch, FS fs) throws JSchException { final File home = fs.userHome(); if (home == null)