SSH接続テスト (公開鍵認証) (SSH.NET) 2016/11

2019/3 Key 'OPENSSH' is not supported. エラーについて
 OpenSSHのssh-keygenで作成する秘密鍵のデフォルト方式が「OPENSSH」形式に変更されたたが、SSH.NETが未対応のため公開鍵方式でログインができなくなるエラーが発生。 ssh-keygenで'-M'オプションをつけると従来通りの形式で秘密鍵が生成されるので、下記コードでログインすることができる。

ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// ここまではデフォルト

using System.Net;
using Renci.SshNet;
// 以上の2つは追加

namespace ConsoleSSHTest2
{
    class Program
    {
        static void Main(string[] args)
        {
            // サーバURL (IPアドレスも可)
            string url = "hoge.kd2.jp";
            //string url = "xxx.xxx.xxx.xxx";
            // サーバポート
            int port = 22;
            // ユーザ
            string username = "www";
            // 秘密鍵
            string privatekey = @"C:\path\to\private_key";

            ConnectionInfo CInfo = new ConnectionInfo(url, port, username,
                new AuthenticationMethod[] {
                    new PrivateKeyAuthenticationMethod(username, new PrivateKeyFile[] {
                        new PrivateKeyFile(privatekey)
                        // パスフレーズがある場合は new PrivateKeyFile(privatekey, "passphrase")
                    })
                }
            );

            string command = "ls -la";

            using (SshClient sshClient = new SshClient(CInfo))
            {
                sshClient.Connect();

                using (SshCommand cmd = sshClient.CreateCommand(command))
                {
                    cmd.Execute();
                    Console.WriteLine(username + "@" + url + " > " + cmd.CommandText);
                    Console.WriteLine(cmd.Result);
                    Console.WriteLine("ExitStatus = {0}", cmd.ExitStatus);
                }
                sshClient.Disconnect();
            }

        }
    }
}