From 448addf10d132a410b7d280674fef5ed04463ed2 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Sun, 5 Apr 2015 15:59:20 -0700 Subject: Add a CHANGELOG Change-Id: I7031e8bc379ed52ea8eb06e79cefb871204d530c --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..665105b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Change Log +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [Unreleased][unreleased] -- cgit v1.2.3 From c7032050b30cd7e4bbb7323a821cf236d2b64cf1 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Sat, 4 Apr 2015 23:09:34 -0700 Subject: Keep order for crypto wishlist Switch from TreeSet to LinkedHashMap since the preference is determined by iterating over the Set for both KEX_ALGS and HOST_KEY_ALGS. The order before was based on string comparisons(!) Change-Id: Ia4573d67f35a5371eb8c70dde631085d61570fe9 --- CHANGELOG.md | 3 +++ src/com/trilead/ssh2/transport/KexManager.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 665105b..895d821 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3 +3,6 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased][unreleased] +### Fixed +- Key exchange and host key algorithm preference order was not being + respected. diff --git a/src/com/trilead/ssh2/transport/KexManager.java b/src/com/trilead/ssh2/transport/KexManager.java index 2476b76..acf2812 100644 --- a/src/com/trilead/ssh2/transport/KexManager.java +++ b/src/com/trilead/ssh2/transport/KexManager.java @@ -8,6 +8,7 @@ import java.security.SecureRandom; import java.security.interfaces.DSAPublicKey; import java.security.interfaces.ECPublicKey; import java.security.interfaces.RSAPublicKey; +import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; @@ -61,7 +62,7 @@ public class KexManager supportsEc = keyFact != null; } - private static final Set HOSTKEY_ALGS = new TreeSet(); + private static final Set HOSTKEY_ALGS = new LinkedHashSet(); static { if (supportsEc) { HOSTKEY_ALGS.add("ecdsa-sha2-nistp256"); @@ -72,7 +73,7 @@ public class KexManager HOSTKEY_ALGS.add("ssh-dsa"); } - private static final Set KEX_ALGS = new TreeSet(); + private static final Set KEX_ALGS = new LinkedHashSet(); static { if (supportsEc) { KEX_ALGS.add("ecdh-sha2-nistp256"); -- cgit v1.2.3 From be562fe3c5c6f47d78724de8221974acec389a4f Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Sat, 4 Apr 2015 23:09:54 -0700 Subject: Provide more context for SSH connection failures Since the Trilead SSH stack throws IOException on failures and then higher levels of the stack catch those, we need to descend into the causes of each Exception to give the user more context. Unfortunately this information is not localized. Change-Id: I8b1fdf9eab65e5d2f6f1956562cbf9f56a2adb9d --- CHANGELOG.md | 4 ++++ src/org/connectbot/transport/SSH.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 895d821..ddfccf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed - Key exchange and host key algorithm preference order was not being respected. + +### Added +- More context is given for failures to connect via SSH which should + reveal why a host might be incompatible with ConnectBot. diff --git a/src/org/connectbot/transport/SSH.java b/src/org/connectbot/transport/SSH.java index c5103f5..ab1ca4c 100644 --- a/src/org/connectbot/transport/SSH.java +++ b/src/org/connectbot/transport/SSH.java @@ -454,7 +454,11 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC Log.e(TAG, "Problem in SSH connection thread during authentication", e); // Display the reason in the text. - bridge.outputLine(e.getCause().getMessage()); + Throwable t = e.getCause(); + do { + bridge.outputLine(t.getMessage()); + t = t.getCause(); + } while (t != null); close(); onDisconnect(); -- cgit v1.2.3