キーペアを作成する意味
キーペアは、EC2インスタンスにアクセスする時などに利用される暗号鍵で、セキュリティ認証を行うために作られています。キーの暗号化にはRSAやED25519というアルゴリズムが使われてます。
まず、キーペアを作成する意味の一つは暗号化です。暗号化を施すことによって、第三者への情報漏洩を避けることができる点です。そして二つ目にこれから説明する暗号化と複合化の仕組みを利用して、送信者が指定した人以外にデータの送受信ができない仕組みを整えることで、通信のなりすましを防ぐことができる点です。
キーペアの方式(公開鍵暗号方式)
キーペアを作成するにあたって、まずは秘密鍵と公開鍵のキーをそれぞれ作成する必要があります。秘密鍵は、特定の人しか知らない鍵に対して公開鍵は、公に公開していい鍵になります。
一般的な通信では公開鍵暗号方式が挙げられます。これはまず受信者が秘密鍵を作成します。秘密鍵から公開鍵を作成し、受信者はデータを送っていい人に公開鍵を渡します。データの送信をする上で、送信者の公開鍵でデータを暗号化した後、受信者の秘密鍵でデータを複合化します。この仕組みによって、データの改ざんや情報漏洩を防ぐ効果が期待できます。
(イメージ図)
コンソール画面とターミナルにてSSHキーを作成および接続
コンソール画面
今回はMacでキーペアを作るため、pem形式を使っていきます。(Windowsはppk形式)
ターミナルの入力
$ mkdir .ssh
$ cp ~/Downloads/AWS_key.pem .ssh
("AWS_key.pem"は任意の名前を設定する)
AWSのコンソール画面で作成された、SSHキーはDownloadフォルダに保存されるため、秘密鍵である"AWS_key.pem"を先ほど作成した.sshディレクトリにコピーしていきます。
$ ssh -i ~/.ssh/AWS_key.pem ec2-user@XXXXXXXXXXXX
AWS画面にて作成した後に出たものをそのままコピーすることによって、サーバーに接続できます。
また、サーバーへの接続を切断するには、logoutやexitコマンドを入力することで、切断できます。
多段接続
ssh接続をするには、まずは踏み台サーバーに接続した上でプラーベートサブネット内にあるWebサーバーにssh接続を行うといった2重に接続をしなければなりません。そこで、一回のコマンド入力によって、SSH接続できるように設定していきます。
先ほど作った".ssh"フォルダの中にconfigファイルを作成し以下のコマンドを入力します。
Host bastion ----------------------------------------- ①
Hostname (踏み台サーバーのパブリックIP) ---------------- ②
User ec2-user ------------------------------------ ③
IdentityFile ~/.ssh/AWS_key.pem ------------------ ④
Host web01
Hostname (Webサーバー01のプライベートIP)
User ec2-user
IdentityFile ~/.ssh/AWS_key.pem
ProxyCommand ssh bastion -W %h:%p ----------------- ⑤
Host web02
Hostname (Webサーバー02のプライベートIP)
User ec2-user
IdentityFile ~/.ssh/AWS_key.pem
ProxyCommand ssh bastion -W %h:%p
① Hostの項目には、エイリアスを登録
② 踏み台サーバーのパブリックIDやWebサーバーのプライベートIPなどを指定
③ ログインするユーザー名
④ 秘密鍵のパスを指定
⑤ 踏み台サーバーを経由してログイン
$ ssh bastion(サーバーのエイリアス)
上記のコマンドでサーバーに接続できます。
サーバー接続エラー
今回は上記のコマンドを入力した時に、「Permissinon denied」エラーが出ました。
下記のコマンドを入力をすることで、権限を許可します。
$ chmod 600 AWS_key.pem
参考