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);
        }
예제 #2
0
        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);
                }
            }
        }