Chapter4 4-4-5 SSHでログイン での「アクセス拒否(Permission denied(publickey))」(エラー)を解決

4-4-5 SSHでログイン での「アクセス拒否(Permission denied(publickey))」(エラー)を解決

前回の記事での4-4-5 SSHでログイン でのエラー
を解決していく

ht20a092.hatenablog.com

 

いろいろ調べた結果、作成したスタックとSSH鍵を消して入れ直したらエラーを解決できることが多いらしい

 

スタックと鍵を削除していく

$ cdk destroy

このコマンドでスタックを削除していく

次に

$ aws ec2 delete-key-pair --key-name "HirakeGoma"

$ rm -f ~/.ssh/HirakeGoma.pem

この2つのコマンドを実行してSSH鍵を削除

これでスタックと鍵を削除することができた

スタックと鍵を入れ直していく

ht20a092.hatenablog.com

この記事の「4-4-3やり直し」と「4-4-4をもう一度実行」を参考に鍵とスタックを入れ直す

 

再度4-4-5 SSHでログインを試す

4-4-4のデプロイで新しく表示されたIPアドレス

$ ssh -i ~/.ssh/HirakeGoma.pem ec2-user@<IPアドレス>

を実行
そうしたら「アクセス拒否」と出ずに絵文字の絵が出てくる

これにて4-4-5SSHでログイン をすることができた

Chapter4 4-4-5 SSHでログイン での「アクセス拒否(Permission denied(publickey))」(エラー)

4-4-5 SSHでログイン での「アクセス拒否(Permission denied(publickey))」(エラー)

4-4-4 デプロイを実行ができたらさっそくSSHでログインしてみよう

前回の4-4-4をしたときに起動したインスタンスのパブリックIPアドレスが表示されたのでそのIPアドレスを使っていく
MyFirstEc2.InstancePublicIp = のところがIPアドレス

画像はIPアドレスを一部隠してるが「1*.***.**.*0」という数字がわかると思うこの数字を

$ ssh -i ~/.ssh/HirakeGoma.pem ec2-user@<IPアドレス>

このコマンドの
<IPアドレス> というところに1*.***.**.*0を当てはめて実行する

「yes か no」を選ぶことになるのでyesと入力して実行

そうしてしばらくたったらアクセス拒否と出てログインを失敗を失敗した

 

<追記>エラーを解決することができた。
詳しいことは下の記事から

ht20a092.hatenablog.com

Chapter4

4-1 準備

はじめに

$ git clone https://github.com/tomomano/learn-aws-by-coding-source-code.git

このコマンドを入力して本ハンズオンで使用するプログラムのソースコードをダウンロード

4-4-1 Pythonの依存ライブラリのインストール

Pythonの依存ライブラリをインストール。Pythonライブラリを管理するツールのvenvを使用していく

まずは、handson/ec2-get-startedに入っていく

$ cd handson/ec2-get-started

と入力して実行

ディレクトリに移動できたので

$ python3 -m venv .env
$ source .env/bin/activate
$ pip install -r requirements.txt

*コマンド3つめを実行するときの画面

この3つのコマンドを実行して、ダウンロードできたら無事Pythonの環境構築は完了

 

4-4-3 SSH鍵の生成

EC2インスタンスにはSSHを使ってログインする。なのでハンズオン専用に使うSSHの公開鍵・秘密鍵のペアを準備する必要がある

$ export KEY_NAME="HirakeGoma"
$ aws ec2 create-key-pair --key-name ${KEY_NAME} --query 'KeyMaterial' --output text > ${KEY_NAME}.pem

この2つのコマンドを入力して実行できたら、現在のディレクトリ「HirakeGoma.pem」というファイルが作成された。これがサーバーにアクセスするための秘密鍵である。

SSHでは、秘密鍵は ~/.ssh/ というディレクトリに配置されるのが一般的であるので、鍵ファイルの移動を行う。

$ mv HirakeGoma.pem ~/.ssh/
$ chmod 400 ~/.ssh/HirakeGoma.pem

この2つのコマンドを入力して実行できたら移動完了。

ついでにファイルのアクセス権限をchmodにより400に設定している



4-4-4 デプロイを実行

EC2のインスタンスをデプロイする準備ができたので、デプロイを実行していく

$ cdk deploy -c key_name="HirakeGoma"

そしたらエラー

このエラーを解決することができなかった...

 

<追記>エラーを解決することができた。
詳しいことは下の記事から

ht20a092.hatenablog.com

Chapter4 4-4-4 デプロイを実行 でのエラーを解決

前回の4-4-4 デプロイを実行という所で

$ cdk deploy -c key_name="HirakeGoma"

このコマンドを実行したら

このエラーが出た。

いろいろ調べた結果

$ cd handson/ec2-get-started


このコマンドでhandson/ec2-get-startedのディレクトリに入った状態で4-4-1の箇所から作業をしないといけないようだった。

なので4-4-1からhandson/ec2-get-startedに入った状態でやり直していく。

$ cd handson/ec2-get-started

4-4-1やり直し

$ python3 -m venv .env
$ source .env/bin/activate
$ pip install -r requirements.txt

このコマンドを入力して実行

 

4-4-3やり直し

$ export KEY_NAME="HirakeGoma"
$ aws ec2 create-key-pair --key-name ${KEY_NAME} --query 'KeyMaterial' --output text > ${KEY_NAME}.pem

このコマンドを入力して実行

そしたら「aws configureの設定をしてください」とでたので

「$ aws configure」このコマンドを実行して
設定をまたしていく

設定したらもう一度

$ export KEY_NAME="HirakeGoma"
 aws ec2 create-key-pair --key-name ${KEY_NAME} --query 'KeyMaterial' --output text > ${KEY_NAME}.pem

このコマンドを入力して実行

そしたら最初の過程で既にHirakeGomaのSSH鍵はできてるのでこのままで良き

 

4-4-4をもう一度実行

準備をし直したのでもう一度デプロイを実行していく

$ cdk deploy -c key_name="HirakeGoma"

このコマンドを入力して実行

そしたらエラーが出ずに成功

そして最後に起動したインスタンスのパブリックIPアドレスが出てくる

Chapter4 4-4-4 デプロイを実行 でエラー発生

今までの準備でインスタンスをデプロイするための準備が整った。

なので次のコマンドでアプリケーションをAWSにデプロイする

$ cdk deploy -c key_name="HirakeGoma"

このコマンドを実行

すると

エラー発生

今まで出てきたエラー文と少し違う

筆者もエラー文を理解しようとしたがあまり英文を理解することができなかった

今の所自分が思ってるエラー内容は「appのコマンドや、cdk.jsonか〜/.cdk.jsonなどが必要」と翻訳しています。ただappコマンドやcdk.jsonなどを調べてエラーを解決しようとしたが解決することができなかった。

 

<追記>エラーを解決することができた。
詳しいことは下の記事から

ht20a092.hatenablog.com

ハンズオンのプログラムを使うには

ubuntuでハンズオンのプログラムを使うには

最初にubuntuを起動したときは

$ docker run -it tomomano/labc

このコマンドを実行しないとハンズオンのプログラムが使えない

なお筆者がこのコマンドを実行したら

とエラー、エラー文を読んで簡単に説明すると「dockerデーモンが起動してないよ」と書かれていた。

なのでdockerデーモンを起動するコマンドを入力する

$ sudo service docker start

これでdockerデーモンを起動することができた

dockerデーモンが起動できたので改めて

$ docker run -it tomomano/labc

を実行

正常に実行できたら左の緑文字の部分が変化する

*筆者の場合だと「ht20a092@ht20a092pc」から「root@aws-handson」に変化

 

これでハンズオンのプログラムが使えるようになる

 

 

 

 

 

 

3-4-3ミニ・ハンズオン:AWS CLIを使ってみよう

3-4-3 ミニ・ハンズオン:AWS CLIを使ってみよう

S3にデータの確認領域(バケットBucket))を作成

$ bucketName="mybucket-$(openssl rand -hex 12)"
$ echo $bucketName
$ aws s3 mb "s3://${bucketName}"

この3つのコマンドを入力して実行

これでランダムな文字列を含んだバケットの名前を生成し、bucketNameという変数に格納された

 

次にパケット一覧を習得してみよう

aws s3 ls」このコマンドを入力して実行したら

2022-04-19 14:13:24 mybucket-1e4cc8fead318eb4dd8fde9d と出てきたので

先程作成したバケットがリストにあることを確認できる

 

ためしにバケットにファイルをアップロードしてみよう

$ echo "Hello world!" > hello_world.txt
$ aws s3 cp hello_world.txt "s3://${bucketName}/hello_world.txt"

この2つを入力して実行、そしたら「upload: ./hello_world.txt to s3://mybucket-1e4cc8fead318eb4dd8fde9d/hello_world.txt」と出て無事アップロードできた

しっかりアップロードできたか試しに以下のコード

$ aws s3 ls "s3://${bucketName}" --human-readable

このコードを入力してパケットの中にあるファイルの一覧を習得してみる

実行したら「2022-04-19 14:21:12   13 Bytes hello_world.txt」と出てしっかり確認できた

 

最後に、使い終わったパケットを削除する

$ aws s3 rb "s3://${bucketName}" --force

と入力して実行

そしたら

「delete: s3://mybucket-1e4cc8fead318eb4dd8fde9d/hello_world.txt
remove_bucket: mybucket-1e4cc8fead318eb4dd8fde9d」と出てきて

無事削除