せっかく構築したEC2インスタンスにUbuntu(WSL)ではSSH接続ができるのにTeraTermから繋がらなくて困った話。
結果
先に結果をお伝えすると
キーペアのタイプをED25519にする。
これで解決しました。
状況
環境情報
基盤:AWSEC2
AMI:Red Hat Enterprise Linux
EC2にRedhatOSのインスタンスを作成後、TeraTermからSSH接続を試みるも「認証に失敗しました。」と出るだけで何故か繋がらない。
認証手順の参考サイト↓
https://qiita.com/Aichi_Lover/items/3471b1ba710e995ffd80
Ubuntu(WSL)からはなぜか接続できてしまうがその状態で使うのも何かと不便なので出来ればTeraTermで接続したい。
小一時間打開策について調べてみたが、ほとんどの記事が「基本ユーザー名と秘密鍵のみでいける。」としか出てこず。。。。
調べる過程で見つけたがOSによってユーザー名が違うなどもあるらしい。(今回はRedHatなのでec2-userで問題ない。)
ログインユーザー名の一例
AMI | ユーザー名 |
RHEL(Red Hat Enterprise Linux) | ec2-user |
CentOS | centos |
Ubuntu | ubuntu |
詰んだ。。。
ふとインスタンス作成手順の中でキーペアのタイプを何の気なしにRSAにしていたことを思い出す。
まさかな、、、と思いつつももう一つredhatで適当にインスタンスを構築して、キーペアのタイプを「ED25519」にして試してみる。
→繋がる。
なんでやねん。と思いつつ、何故かSSH接続できていたUbuntu(WSL)を使用して公開鍵の中身を書き換え。
やっと元のインスタンスへSSH接続ができた。
なぜ認証が通らなかったのかは不明だが、検索して出てきた記事にredhatで組んでいるものがなかったため、(公開ドキュメントが少ない)勝手にredhatが関係していると思っている。
おまけ
キーペア(ED255229)の作成方法
わざわざインスタンス作成のついでに作成しなくても自身のPCでも下記のコマンドで作成できます。むしろそっちの方が簡単だと思います。
Macならターミナル、Windowsならコマンドプロンプト(かパワーシェル)で実行しましょう。
ssh-keygen -t ed25519
格納場所とパスフレーズを聞かれるので基本は何も入れずにエンターで進んで大丈夫です。
成功したらユーザーディレクトリ直下にある.sshというフォルダを見てみてください。きっと作成した公開鍵と秘密鍵の二つが入っているはずです。
こんな感じ↓
お尻に.pubとついているのが公開鍵ですね。
.sshが無い(表示されない)
ユーザーディレクトリ直下に.sshフォルダが無い!!!!!!!という方、落ち着いてください。隠しファイルが表示されないようになっている可能性が高いです。(隠しファイルですからね)
その場合は
・Macであれば「Command」+「Shift」+「.」で表示。
・Windowsであればエクスプローラーから「表示」→「表示」→「隠しファイル」にチェック。もしくは「右クリック」→「プロパティ」→「全般」タブの「隠しファイル」にチェック。
で表示できます。
公開鍵の設置
自分の場合はUbuntu(WSL)でなぜかログインできたので、
~/ec2-user/.ssh/authorized_keysの中身に公開鍵をコピペ(複数記述可能) でいけましたが、こういう時ってそもそもSSH接続ができない状況だと思うのでその場合はAWS側から変えましょう。
この辺りが参考になるかと思います。↓
まとめ
redhatには気を付けつつ、他のキーペアタイプも試してみる。セキュリティ的にはrsaよりもED25519の方が強いようなので今後はED25519推しで行こうと思います。
ED25519はRSAと比べ、鍵の長さは短く設定されているが、短い割にはアルゴリズムが強いといった特長を持っています。鍵の長さが短い分、暗号化、復号化の処理が速いといった利点があります。
参考記事→https://qiita.com/pyon_kiti_jp/items/aa5b01fbd1132dc99abf