今までsshにはTeratermを使ってきた。
なんか知らん間にOSDNが実質死亡しててgithubに引っ越ししてたり、ver5がbetaじゃなくなったりしていたが、とりあえずv5.1を使っている。
Windows Terminalも使いやすくなってきているのでWindows Terminalからsshしてみたら、identity_sign: private key C:¥Users¥…¥ed25519 contents do not match public とか言われてIgnore private keyされてしまう。
なぜだなぜだと調べていたら、とりあえず鍵作り直せ的なページばかりヒットする。
よくよく見てみると、ローカルのid_ed25519 とid_ed25519.pub の日付が違う。どうも秘密鍵と公開鍵のペアが間違って置いてあるようだ。
Teratermはpublic keyは見ていないようで、秘密鍵のパスフレーズさえ入れれば使用できたが、ssh.exeはペアを確認するらしい。
結局、ssh-keygen.exe -y ed25519 で公開鍵を作り、ed25519.pubを書き直したら、無事sshできるようになりました。
このPC用の秘密鍵を作ったとき、別で作ってコピーしたような記憶があり、その時違うペアを置いていたようだ。まあ秘密鍵さえ正しければよかったので今まで気が付かなかったようだ。他のPCは正しかったようでssh.exeを使わなければわからなかった問題だな。
ちなみに WARNING: UNPROTECTED PRIVATE KEY FILE! がでかでかと表示されたが、これもちと苦労した。
explorerでid_ed25519のプロパティからセキュリティタブで継承化を無効にしたり、一度全部の権限取り上げてから再度自分のみ設定したりとかして警告は出なくなった。
cacls.exeで一発登録とかできそうな気がするけど、NT時代に諦めてexplorer property使うようになってしまったので今更調べる気はないw
UNIX系と違ってオーナー/グループ方式じゃないからなぁ。まあaclの方が細かく設定できるんではあるんだが。継承とかあって更にややこしい。
そしていろいろ苦労してssh.exe使えるようになったのだが、タブの中でGNU screenを使うとわけわからんようになるので結局Teratermを使う事にしたとさ。
コメントを残す