diff --git a/cli/src/main/java/hudson/cli/PrivateKeyProvider.java b/cli/src/main/java/hudson/cli/PrivateKeyProvider.java index 64c84fc207..d8474b802e 100644 --- a/cli/src/main/java/hudson/cli/PrivateKeyProvider.java +++ b/cli/src/main/java/hudson/cli/PrivateKeyProvider.java @@ -75,7 +75,7 @@ public class PrivateKeyProvider { /** * Read keys from default keyFiles * - * {@code .ssh/id_rsa}, {@code .ssh/id_dsa} and {@code .ssh/identity}. + * {@code .ssh/id_rsa}, {@code .ssh/id_ecdsa}, {@code .ssh/id_ed25519}, {@code .ssh/id_dsa} and {@code .ssh/identity}. * * @return true if some key was read successfully. */ @@ -83,7 +83,7 @@ public class PrivateKeyProvider { final File home = new File(System.getProperty("user.home")); boolean read = false; - for (String path : new String[] {".ssh/id_rsa", ".ssh/id_dsa", ".ssh/identity"}) { + for (String path : new String[] {".ssh/id_rsa", ".ssh/id_ecdsa", ".ssh/id_ed25519", ".ssh/id_dsa", ".ssh/identity"}) { final File key = new File(home, path); if (!key.exists()) continue; diff --git a/cli/src/test/java/hudson/cli/PrivateKeyProviderTest.java b/cli/src/test/java/hudson/cli/PrivateKeyProviderTest.java index 0f5bc82b62..a3f5c9526c 100644 --- a/cli/src/test/java/hudson/cli/PrivateKeyProviderTest.java +++ b/cli/src/test/java/hudson/cli/PrivateKeyProviderTest.java @@ -142,4 +142,22 @@ class PrivateKeyProviderTest { String password = "password"; assertThrows(IllegalArgumentException.class, () -> PrivateKeyProvider.loadKey(file, password)); } + + /** + key command: ssh-keygen -t ecdsa -b 256 -N "" -C "" -f ecdsa + */ + @Test + void loadKeyECDSA() throws IOException, GeneralSecurityException { + File file = resourceAsFile("ecdsa"); + assertKeyPairNotNull(file, null); + } + + /** + key command: ssh-keygen -t ed25519 -N "" -C "" -f ed25519 + */ + @Test + void loadKeyED25519() throws IOException, GeneralSecurityException { + File file = resourceAsFile("ed25519"); + assertKeyPairNotNull(file, null); + } } diff --git a/cli/src/test/resources/hudson/cli/ecdsa b/cli/src/test/resources/hudson/cli/ecdsa new file mode 100644 index 0000000000..fa5cf6e0d5 --- /dev/null +++ b/cli/src/test/resources/hudson/cli/ecdsa @@ -0,0 +1,8 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS +1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSmYgxT7E9XwGYmr8cd++EvpaNX3e1/ +T5w30hcO7xNk4n7xDsfZk8jOvg1ZbsfItBB5yjwRy7QTyXt/2ankp/E7AAAAoG6/A51uvw +OdAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKZiDFPsT1fAZiav +xx374S+lo1fd7X9PnDfSFw7vE2TifvEOx9mTyM6+DVlux8i0EHnKPBHLtBPJe3/ZqeSn8T +sAAAAhAJgBcc/Ez07nhpmLlsHhySD5zFeW/mHizkk/CIrvjkqSAAAAAAECAwQFBgc= +-----END OPENSSH PRIVATE KEY----- diff --git a/cli/src/test/resources/hudson/cli/ed25519 b/cli/src/test/resources/hudson/cli/ed25519 new file mode 100644 index 0000000000..1a2473a21c --- /dev/null +++ b/cli/src/test/resources/hudson/cli/ed25519 @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACD6KfM1gIePqB5IPHvD0vjniUUYE6hb6c6GsxVrPZg4ngAAAIiLNylbizcp +WwAAAAtzc2gtZWQyNTUxOQAAACD6KfM1gIePqB5IPHvD0vjniUUYE6hb6c6GsxVrPZg4ng +AAAEAA/Q+bSWkxT9WZacetaaN/KBJvrDRlHOuxKQghG49hKvop8zWAh4+oHkg8e8PS+OeJ +RRgTqFvpzoazFWs9mDieAAAAAAECAwQF +-----END OPENSSH PRIVATE KEY-----