プログラミングでアイデアを具現化したい

仮説アルファを妄想するのが日課でアイデアを具現化するためにプログラミングを始めました。主な言語はC# 。

SSH接続の公開鍵認証でハマった話。(C# SSH.NET)

tos5511.hatenablog.com


続きです。

パスワード認証で実装したものの、せっかくだから公開鍵認証もやっておこう!
なんて、軽く取り掛かったらちょっとハマったので共有しておきます。

var key = new PrivateKeyFile("openssh.key");
var connectionInfo = new ConnectionInfo("サーバIP", sshport , "ユーザ",
    new PrivateKeyAuthenticationMethod("ユーザ", key) 
);
var client = new SshClient(connectionInfo);
client.Connect();

基本的には上記のコードでSSH接続ができます。

が、

var key = new PrivateKeyFile("openssh.key");

この部分で {"Key 'OPENSSH' is not supported."} というエラーが発生します。
・・・サポートしてねぇわけねーだろ!!と言いたくなりますが

これ、結論だけ書くと、
OpenSSHの秘密鍵の書式がV7.8で変更となったが、
SSH.NETが新しい書式に対応していなかったって話。(サポートしてなかったんですw


ということで、OpenSSH側で鍵を発行する際に、'-m PEM' オプションをつけて
古い書式で発行した鍵を参照することで無事問題解決に至りました。

.\ssh-keygen -m PEM


今回の経験から学んだこと。
日本語だけで情報を探すべきではない