9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS初学者】EC2インスタンスへのSSH接続(ログイン)を簡単にしよう!

Last updated at Posted at 2023-07-08

はじめに

最近、オリジナルプロダクトのデプロイの練習として、Railsで作ったアプリをAWSを用いてデプロイする機会がありました。
その際、AWSのEC2インスタンスにログインするコマンドが長かったため、短いコマンドでログインできないかと調べたので、その内容についてまとめていきたいと思います:writing_hand:

undraw_secure_login_pdn4.png

前提条件

  • AWSにてVPC作成が完了している
  • EC2インスタンスの起動が完了している
  • パブリックIPアドレスとElasticIPアドレスの紐づけが完了している

1. SSHとは

AWSのEC2インスタンスへのログインするには、一般的にSSHを使用します。
SSHとは何なのでしょうか?
SSHとはSecure Shellの略で、コンピュータネットワーク上でデータ通信を暗号化するためのプロトコルの一つで、TCPポート番号は22です。
SSHは以下の特徴があるためリモートコンピュータに安全に接続して操作するなど広く使用されています。

SSHの特徴
  1. 安全性
    SSHは全ての通信(コマンド、パスワード、ファイルなど)を暗号化します。
    これにより、悪意を持った人がネットワーク上でデータが盗聴しようとしても、その情報を読み取ることはできません。

  2. 認証機能
    SSHは強力な認証機能を提供します。最も一般的な方法は、パスワードベースの認証と公開鍵認証です。
    EC2インスタンスの認証は公開鍵と秘密鍵を用いた公開鍵認証となっており、具体的には秘密鍵がクライアントに保管され、公開鍵はサーバー(ここではEC2インスタンス)に配置されています。そして接続時にクライアントは公開鍵に対応する秘密鍵を持っていることを証明することによりログインできます。

  3. 完全性
    SSHはネットワーク上でデータが改ざんされていないことを保証します。
    この完全性を保証するためにSSHはハッシュ関数を使用しており、SSHを通じて送信されるデータパケットから固定長の文字列(ハッシュ)を生成し、元のデータが少しでも変わると生成されるハッシュも大きく変わるため、ハッシュが受信側と送信側で一致しない場合は、データが破棄されます。

2. 通常ログイン方法

EC2インスタンスを作成する際に、AWSはSSHのキーペア(公開鍵と秘密鍵)を作成し、秘密鍵はクライアント側の安全な場所に保存する必要があります。なぜなら、このキーペアは、インスタンスにログインするための認証情報として使用されるからです。
そこで、ここからの説明では秘密鍵は「~/.ssh」ディレクトリに保存されていることを前提に説明を進めます。

  • SSHで接続
    以下のコマンドを実行すると、インスタンスと接続することができます
ターミナル | SSH接続
ssh -i ~/.ssh/秘密鍵の名前.pem ec2-user@Elastic IPアドレス

コマンド説明

  • ssh
    ネットワーク上の他のコンピュータにログインしたり、コマンドを実行したりするためのプログラム
  • -i ~/.ssh/秘密鍵の名前.pem
    「-i」オプションは秘密鍵へのパスを指定
  • ec2-user
    リモートサーバー上でログインするユーザー名
    (EC2インスタンスのデフォルトユーザー名はAMIによりますが、Amazon Linuxでは通常「ec2-user」 となっている)
  • @Elastic IPアドレス
    「@」の後ろは接続したいサーバーのIPアドレスまたはホスト名を指定

3. 簡略版ログイン方法

毎回、インスタンスに接続する度に長いIPアドレスやDNS名を打ち込んだり、ElasticIPアドレスの値を覚えておくのは、見返したりメモしておけば大丈夫ですが、何回もとなると面倒ですよね、、、、
そこで、「ssh サービス名」(例えば「ssh rails_app」など)とコマンドを打つだけで接続できるようにしていきます!
具体的には以下の通りSSHの設定ファイルをあらかじめに設定することで接続を簡単にします:sunglasses:

(1) SSH設定ファイルの編集準備

「~/.ssh/config」ファイルがSSHのクライアント設定を記述するファイルなので、まず次のコマンドで設定ファイルを開きます。

ターミナル | 設定ファイル開く
vi ~/.ssh/config

(2) 接続情報を設定ファイルへ追加

Vimエディタでconfigファイルが開かれるので、書き込みを行うiを押しINSERTモードに変更します。
その後、下記のコードを入力します。

ターミナル | 設定ファイル編集
Host 【サービス名】
    HostName 【Elastic IPアドレス】
    User ec2-user
    IdentityFile ~/.ssh/秘密鍵の名前.pem

編集内容について

  • Host 【サービス名】
    【サービス名】は任意で、これがSSHコマンドで使用する名前になります。
    アプリの名前やプロジェクトの名前などにしておくと分かりやすいでしょう。
  • HostName 【Elastic IPアドレス】
    ここで接続するEC2インスタンスを指定するためElastic IPアドレスを入力します。
  • IdentityFile ~/.ssh/秘密鍵の名前.pem
    SSHキーペアの秘密鍵へのパスを指定します。

(3) 設定ファイル保存・設定完了

入力が完了したら、Escキーを入力し、NORMALモードに戻ります。
ファイルを保存するため:wコマンドで上書き保存し、Vimエディタを終了するため:qコマンドを入力します。
ここまでで設定完了です!!

(4) 接続確認

以下の簡略版コマンドでSSH接続します。
補足ですが、このコマンドを打つ際はカレントディレクトリを.sshにする必要がなく、嬉しいことにどのディレクトリにいても実行可能です:tada:

ターミナル | SSH接続
ssh サービス名

私は試しにrails_appというサービス名でconfigファイルを設定し、SSH接続できるか試してみました。
スクリーンショット 2023-07-08 10.45.28.png

無事、簡略版コマンドでも接続できました:smile:

4. おわりに

サービスをデプロイするにあたっていろいろな設定項目があったり、インフラ関係の知識が必要になってきて大変になると思いますが、こういった作業で少しでも楽になったり速くなったりする知識を増やしていくことで、メインとなる業務に時間をかけることができ、好循環を生むのではないかなと思います:wink:

こうした豆知識的なことも積極的に取り入れて、自分自身の成長に繋げていきたいですね:seedling:

5. 参考文献

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?