☁️

AWS CLIを使用してアクセスキーを作成する。 

2024/12/29に公開

コマンドで作成できるらしい?

EC2にssh接続するアクセスキーを作成するときは、マネジメントコンソールからやってますが手作業しなくてもコマンドを実行して自動で作成してもらいダウンロードもしてくれる方法があります。

公式にも解説はある

サンプルコード

EC2インスタンスにセキュリティグループが関連付けられていないとアクセスできないので設定しておく。["0.0.0.0/0"]にして外からの通信を全て許可にしておく。

resource "aws_instance" "example" {
  ami           = "ami-0ab02459752898a60"
  instance_type = "t2.micro"
  key_name      = "terraform-study"
  vpc_security_group_ids = [aws_security_group.allow_ssh.id]
  tags = {
    "Name" = "example"
  }
}

resource "aws_security_group" "allow_ssh" {
  name   = "allow_ssh"
  vpc_id = data.aws_vpc.default.id
  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

data "aws_vpc" "default" {
  default = true
}

アクセスキーを確認するコマンド。実行すると名前がわかる。AWS CLIをインストールしている場合。

aws ec2 describe-key-pairs --query KeyPairs[*].KeyName

キーペアーを作るコマンド。AWS CLIをインストールしている場合

AIの力を借りて手順を作った😅
Terafformで使ってるときに鍵作ってないの思い出した!

見本

aws ec2 create-key-pair --key-name <キーペア名> --query 'KeyMaterial' --output text > <保存するファイル名>.pem

実行する例)

aws ec2 create-key-pair --key-name udemy-study --query KeyMaterial --output text > terraform-study.pem

成功すれば作成されている。

先ほどのコマンドで作成したキーペアファイル(terraform-study.pem)は、コマンドを実行したディレクトリ(/Users/personal/udemy-pj/terraform-study/)に自動的に保存されているはずです。

確認してみましょう:

はい、terraform-study.pemファイルが作成されていますね。

Terraformの状態を更新しておく必要があるのでterraform applyを実行する。

terraform apply

このファイルを安全に使用するために、以下の手順を実行することをお勧めします:

キーペアファイルを~/.ssh/ディレクトリに移動:

mv terraform-study.pem ~/.ssh/

適切なパーミッションを設定(重要):
homeディレクトリで実行する。

chmod 400 ~/.ssh/terraform-study.pem

変更が完了したら、新しいインスタンスのパブリックIPアドレスを使って以下のようにSSH接続できます:
terraform showコマンドで確認します。

terraform show

ターミナルに表示されたpublic_ipをコピーして、sshコマンドを実行します。何度か失敗しましたが、セキュリティーグループの設定を忘れていたり、chmodのコマンドを.ssh/に実行してないのと、コマンドをssh/に起動して実行してないのが原因でした。

見本のコマンド

ssh -i terraform-study.pem ec2-user@<新しいパブリックIP>

実行するコマンド

ssh -i terraform-study.pem ec2-user@43.207.43.160

正しくできていればEC2に接続できるはずです。

Discussion