private void TestKey <TKey>(string keyName, string comment, int keyLength = 0, string?pass = null) where TKey : Key, new() { var keyStream = GetKey($"{keyName}.ppk"); if (keyStream is null) { throw new NullReferenceException(nameof(keyStream)); } var keyFile = new PuttyKeyFile(keyStream, pass); Assert.IsInstanceOf <TKey>(((KeyHostAlgorithm)keyFile.HostKey).Key); Assert.AreEqual(keyLength, ((KeyHostAlgorithm)keyFile.HostKey).Key.KeyLength); Assert.AreEqual(comment, ((KeyHostAlgorithm)keyFile.HostKey).Key.Comment); }
static void Main(string[] args) { var testKeys = new[] { "ed25519", "ecdsa256", "ecdsa384", "ecdsa521", "rsa2048", "rsa3072", "rsa4096", "rsa8192", "ed25519pass", "ecdsa256pass", "ecdsa384pass", "ecdsa521pass", "rsa2048pass", "rsa3072pass", "rsa4096pass", "rsa8192pass", }; foreach (var testKey in testKeys) { try { var keyStream = GetKey($"{testKey}.ppk"); if (keyStream is null) { throw new NullReferenceException(nameof(keyStream)); } PuttyKeyFile key; if (testKey.Contains("pass")) { key = new PuttyKeyFile(keyStream, "12345"); } else { key = new PuttyKeyFile(keyStream); } using var client = new SshClient("schwanensee", "root", key); client.Connect(); Console.WriteLine(client.RunCommand("hostname").Result.Trim()); Console.WriteLine($"Key {testKey} worked!"); } catch (Exception e) { Console.WriteLine(testKey); Console.WriteLine(e); } } }