はじめに
AWS CloudShellを用いて、EC2インスタンスにSSH接続する方法についてまとめてみました。
なお、この記事は以下のUdemyの講座内容を自分なりにまとめたものとなります。
AWSを学習中の方のご参考になれば幸いです。
※私の動作環境はWindows11です。
そもそもSSH接続とは?
SSH接続とは簡単に言うと、AWS上のサーバー(EC2インスタンス)に、手元のPCから安全にログインして操作する方法のことです。
EC2インスタンスはクラウド上にあるサーバーなので、自分のパソコンのように直接画面やキーボードで操作することはできません。そこで、インターネットを通じてリモートで操作する必要があります。
その際に使われるのが SSH(Secure Shell) です。SSHを使うと、以下の理由から安全かつ便利にサーバーへ接続できます。
-
通信内容の暗号化
パスワードやコマンドの内容が盗み見られず、安全にやり取りできる。 -
キーペア認証による安全なログイン
秘密鍵ファイルを使ってログインすることで、パスワードによる認証よりも不正アクセスのリスクを軽減できます。 -
リモート操作
インターネットがあれば、世界中どこからでも操作できます。
EC2インスタンスのSSH接続
まず、EC2インスタンスをSSH接続する為には、EC2インスタンスを作成する画面で、「SSHトラフィックを許可」のチェックを入れた状態にしておく必要があります。
ここにチェックが入っていないと、SSH接続しようとしても失敗してしまいます。
また、セキュリティグループの設定で、SSHによる通信を許可しておく必要があります。
※これは後からでも設定変更できます。
SSH接続において、全てのIP(0.0.0.0/0)を許可することは大変危険です。
全てのIP(0.0.0.0/0)を許可してしまうと、世界中の誰でもアクセスできてしまうからです。
SSH接続では、自分のパブリックIPアドレスのみを許可しておくと安全です。
パブリックIPアドレスは、以下のEC2インスタンスの詳細画面で確認できます。
※パブリックIPアドレスは毎回変わる可能性があります。
AWS CloudShellを起動します。
右上部分にある「アクション」→「ファイルをアップロード」をクリックします。
エクスプローラーの画面が開いたら、EC2インスタンス作成時に選択した秘密鍵をクリックして開きます。
画面右下部分に「ファイルのアップロードに成功」と表示されたらOKです。
EC2インスタンスをSSH接続する前に、カレントディレクトリ(今自分がいる作業場所)に秘密鍵が保管されているか確認しましょう。
以下のコマンドを実行し、表示された場所がカレントディレクトリです。
pwd
次に、以下のコマンドを実行し、EC2インスタンスへのSSH接続を行います。
ssh -i <秘密鍵名>.pem ec2-user@<パブリックIPアドレス>
ここで、秘密鍵ファイルの権限が広すぎると以下のようなエラーが表示されます。
Permissions 0644 for 'my-key.pem' are too open.
It is required that your private key files are NOT accessible by others.
このエラーが表示された場合、以下のコマンドを実行して、秘密鍵ファイルのアクセス権限を安全な状態に変更する必要があります。
chmod 400 <秘密鍵>.pem
<コマンドの各部分の意味>
-
chmod
ファイルの権限を変更する -
400
-
権限を数値で指定
「400」は以下を意味します。
-
所有者(自分)
読み取り(r)だけ可能 -
グループ
権限なし -
その他のユーザー
権限なし
権限変更後、もう一度以下のコマンドを実行し、SSH接続を行います。
ssh -i udemy-aws-14days.pem ec2-user@パブリックIPアドレス
SSH接続に成功すると、以下のような画面が表示されます。