Browse Source

[sshd] Log the full KEX negotiation result

Apache MINA sshd doesn't log all values, but it'd be very helpful to
debug KEX problems.

Change-Id: I5a19023c929f39caccde489d51a6fdca711fe5ff
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
changes/23/182223/1
Thomas Wolf 2 years ago
parent
commit
ce61341bd1

+ 19
- 0
org.eclipse.jgit.ssh.apache/src/org/eclipse/jgit/internal/transport/sshd/JGitClientSession.java View File

@@ -39,6 +39,7 @@ import org.apache.sshd.common.PropertyResolver;
import org.apache.sshd.common.config.keys.KeyUtils;
import org.apache.sshd.common.io.IoSession;
import org.apache.sshd.common.io.IoWriteFuture;
import org.apache.sshd.common.kex.KexProposalOption;
import org.apache.sshd.common.util.Readable;
import org.apache.sshd.common.util.buffer.Buffer;
import org.eclipse.jgit.errors.InvalidPatternException;
@@ -200,6 +201,24 @@ public class JGitClientSession extends ClientSessionImpl {
}
}

@Override
protected Map<KexProposalOption, String> setNegotiationResult(
Map<KexProposalOption, String> guess) {
Map<KexProposalOption, String> result = super.setNegotiationResult(
guess);
// This should be doable with a SessionListener, too, but I don't see
// how to add a listener in time to catch the negotiation end for sure
// given that the super-constructor already starts KEX.
//
// TODO: This override can be removed once we use sshd 2.8.0.
if (log.isDebugEnabled()) {
result.forEach((option, value) -> log.debug(
"setNegotiationResult({}) Kex: {} = {}", this, //$NON-NLS-1$
option.getDescription(), value));
}
return result;
}

@Override
protected String resolveAvailableSignaturesProposal(
FactoryManager manager) {

Loading…
Cancel
Save