はじめに
ここ最近VPSを触っているのですが、WindowsのPowerShellからVPSにSSH接続しようとしたときに、うまくいかなかったのですが、なんとか解決できたので、ほかにも同じように困ってしまった人がいたときのために記事にしておきます。
環境
VPS: Conoha VPS (OS:Ubuntu22.01)
ローカル: Windows11
経緯
暗号鍵作成
VPS側で以下のようにコマンドを打って暗号化キーを作成しました。
パスフレーズはなしで作成しています。
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "メールアドレス"
作成された鍵をWindows側に作成
sshフォルダ内にid_rsaとid_rsa.pubができています。
サーバー側に公開鍵を置いて、クライアント(windows)側に秘密鍵を置く必要があるので、コピーして作成しました。
※これが実はエラーとなる原因でした・・・
cat ~/.ssh/id_rsa
表示されたKEYをコピー
-----BEGIN OPENSSH PRIVATE KEY-----
AAAABBBBCCCCDDDDDXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END OPENSSH PRIVATE KEY-----
Windows側にid_rsaファイルを適当に作成して、メモ帳で開いて、ペーストして保存する。
接続確認
さて、これでOKと思って接続しようとしたところ、以下のようにエラーがでました。
Load key "id_rsa": invalid format
[user]@[xxx.xxx.xxx.xxx]: Permission denied (publickey).
フォーマットがあかんと叱られてしまいました。
フォーマット確認
とりあえずサーバー(Ubuntu)側のフォーマットを確認します。
nkf --guess id_rsa
すると結果は LF となっていました。
ASCII (LF)
Windows側のフォーマット確認
サクラエディタ使うと分かりやすいので、そちらで見てみました。
CRLFになってました。
解決方法
コピペがダメだったので、Windows側で鍵を作成して、公開鍵だけをサーバーにアップする形に変更しました。
PowerShellで鍵を作る
PS C:\ConoHaVps\id_rsa> ssh-keygen -t rsa -b 4096 -C "メールアドレス"
パスフレーズはなしで作成します。
できるのか不安でしたが、PowerShellでもssh-keygenが動きました。
初期状態でできるのか、それとも今までいろいろと触ってきた中で入れてあったのか覚えていないですが、自分の環境で動いたので、使えるということだけは事実です。(確認不足すみません)
ちなみに、できあがった鍵をサクラエディタで見たところ、無事にLFとなっていました。
scpでサーバーにアップ
公開鍵(id_rsa.pub)をアップロードします。
scp id_rsa.pub [user]@[xxx.xxx.xxx.xxx]:.ssh
ログインしてみる
先ほど作成した秘密鍵(id_rsa)を使ってログインしてみます。
ssh -i id_rsa [user]@[xxx.xxx.xxx.xxx]
無事にログインできました!