【AWS】起動済みEC2インスタンスに新たにキーペアを追加する方法

AWS

EC2インスタンスに対して新たにキーペアを作成しSSH接続を行う方法について紹介します。


AWSマネジメントコンソールでキーペアを作成

AWSマネジメントコンソールからキーペアを作成します。
EC2の「キーペア」を選択 →「キーペア作成」を押下


以下のように各項目を記入・選択し「キーペアを作成」を押下します。

作成された秘密鍵(.pem)はローカルの環境にダウンロードされます。

ここでは秘密鍵しか作成されていないように見えますが、AWS内部では公開鍵も作成されているみたいです。本来であれば、EC2作成時にこのキーペア名を指定することでダウンロードされた秘密鍵を使ってEC2側に自動で公開鍵が設定されます。ですが、今回はすでに運用されているEC2に対して新たにキーペアを作成するためこの方法は取れません。

.ppk はこの後紹介する ssh-keygen コマンドで公開鍵の情報は取得できません。.ppk を利用して公開鍵の情報を取得する場合は PuTTYgen を使用します。



秘密鍵から ssh-keygen コマンドで公開鍵の内容を生成

MacOSの方はターミナルをWindoswOSの方はコマンドプロンプトを開き、ディレクトリを先ほど保存した秘密鍵まで移動させておく。

ここではMacOSを使用してますので以下のような感じ。

$ pwd
/Users/ec2-user/Desktop

$ ls
test.pem

ssh-keygen コマンドを実行する前に秘密鍵のパーミッションを修正しておく必要があります。初期のパーミッション(600)だと権限が緩すぎるとしてエラーになることがあるためです。

$ chmod 400 test.pem

事前準備ができたら ssh-keygen コマンドを使用して秘密鍵から公開鍵の情報を取得します。

$ ssh-keygen -y -f test.pem
// 先頭の「ssh-rsa」を含めたランダムな数値をメモしておく。
  • 各オプション
    • -y :指定された秘密鍵から公開鍵を表示する。
    • -f :鍵ファイルを指定。

※ちなみに公開鍵から秘密鍵の内容は取得できない(一方向性にもとずく)

もしくは公開鍵用のファイルを作成しても良いです。

$ ssh-keygen -y -f test.pem > /Users/ec2-user/Desktop/public-test-key.pub



生成された公開鍵の内容をEC2インスタンスのauthorized_keyに追記する

秘密鍵から公開鍵の内容を取得できたら最後の工程です。AWSマネジメントコンソールを開き、対象のEC2インスタンスを選択し、「接続」を選択します。


「EC2 Instance Connect」タブを選択し「接続」をクリックすると指定したEC2インスタンスにアクセスすることができます。


ブラウザ上にコンソール画面が表示されます。



./sshディレクトリに移動し、authorized_keyファイルがあることを確認します。

[ec2-user@ ~]$ pwd
/home/ec2-user
[ec2-user@ ~]$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .ssh
[ec2-user@ ~]$ cd .ssh
[ec2-user@ .ssh]$ ls 
authorized_keys
[ec2-user@ .ssh]$ 


vi コマンドで authorized_keys を開きメモした公開鍵の内容を追記します。

[ec2-user@ .ssh]$ vi authorized_keys

※vi コマンドの使い方はこちらを参考にしてみてください。

これでEC2インスタンスに新たに公開鍵が登録されましたので秘密鍵を使用してSSH接続ができるようになります。

$ ssh -i test.pem ec2-user@ipアドレス

セキュリティグループのインバウンドルールの設定もお忘れなく。

今回は以上となります。

コメント

タイトルとURLをコピーしました