AWS CLIを使用してアクセスキーを作成する。
コマンドで作成できるらしい?
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