0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いちいちEC2に接続するのにSSHのコマンドを打つのがめんどくさい。

Posted at

EC2へのSSH接続を~/.ssh/configで効率化する備忘録

AWS Session Managerは便利ですが、利用状況によってはコストが気になる場合があります。コストを抑えつつ、ローカル環境からEC2インスタンスへ手軽にSSH接続するための設定方法を、備忘録としてまとめます。~/.ssh/configファイルを利用することで、接続コマンドを簡略化し、管理を容易にすることが目的です。

前提条件

  1. EC2インスタンスにElastic IPアドレスが付与されていること:

    • 趣旨: Elastic IPアドレス(固定パブリックIPアドレス)をインスタンスに関連付けることで、インスタンスを停止・起動してもIPアドレスが変更されなくなり、~/.ssh/config に記述する HostName を固定できます。これにより、安定した接続設定を維持できます。必須ではありませんが、設定しておくことを強く推奨します。
  2. キーペア(.pemファイル)のパーミッションが正しく設定されていること:

    • 趣旨: SSHクライアントは、秘密鍵ファイルが第三者から読み取られないよう、厳格なパーミッションを要求します。セキュリティ上の重要な要件であり、所有者のみが読み取り可能である必要があります。
    • 設定コマンド例:
      chmod 400 /path/to/your-key.pem
      
    • 根拠: SSHプロトコルのセキュリティ要件に基づき、秘密鍵の漏洩を防ぐため。

1. SSHディレクトリの作成とパーミッション設定

SSH設定ファイルを格納する ~/.ssh ディレクトリを作成し、適切なパーミッションを設定します。

# ~/.ssh ディレクトリが存在しない場合に作成 (-p オプション)
mkdir -p ~/.ssh

# ディレクトリのパーミッションを所有者のみ読み書き実行可能 (700) に設定
chmod 700 ~/.ssh
  • 趣旨: ~/.ssh ディレクトリと内部のファイルは、セキュリティ上、所有者以外からアクセスできないように保護する必要があります。700 は、所有者にのみ全ての権限を与え、他人には一切の権限を与えない設定です。

2. ~/.ssh/config ファイルの設定

~/.ssh ディレクトリ内に config ファイルを作成(または編集)し、接続情報を記述します。

vim ~/.ssh/config

以下のように設定を記述します。

# 接続設定ブロックの開始 (Host には任意の接続名を指定)
Host xxxxxx-server
    # 接続先EC2インスタンスのパブリックIPアドレスまたはDNS名
    HostName <EC2インスタンスのパブリックIPアドレスまたはDNS名>
    # 接続ユーザー (AMIによって異なる場合がある)
    User ec2-user
    # 使用するキーペアファイル (.pem) のフルパス
    IdentityFile <キーペアファイル(.pem)のフルパス>

    # (オプション) 接続維持設定
    # 60秒ごとにサーバーに生存確認パケットを送信
    ServerAliveInterval 60
    # 3回応答がない場合に接続を切断
    ServerAliveCountMax 3

【設定例】

Host app-server
    HostName 123.45.67.89
    User ec2-user
    IdentityFile /Users/hoge/.ssh/app-key.pem
    ServerAliveInterval 60
    ServerAliveCountMax 3
  • 趣旨: config ファイルを利用することで、ssh コマンド実行時にIPアドレス、ユーザー名、キーファイルのパスなどを毎回指定する必要がなくなり、Host で指定した名前(ニックネーム)だけで簡単に接続できるようになります。
  • 注意: User は、Amazon Linux 2の場合は ec2-user が一般的ですが、Ubuntuの場合は ubuntu など、使用するAMIによって異なりますので、適宜変更してください。
  • 接続維持オプション: 長時間操作がない場合にSSH接続がタイムアウトで切断されるのを防ぐために設定します。

3. SSH接続の実行

config ファイルに設定した Host 名を使ってSSH接続を行います。

ssh <任意の接続名>

【実行例】

ssh app-server

成功すると、以下のようにサーバーにログインできます。

A newer release of "Amazon Linux" is available.
  Version 2023.7.20250512:
Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,    #_
   ~\_  ####_       Amazon Linux 2023
  ~~  \_#####\
  ~~    \###|
  ~~      \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~      V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
[ec2-user@ip-xxx-xx-xx-xx ~]$

以上で、~/.ssh/config を利用した効率的なSSH接続設定は完了です。

補足:セキュリティグループ

この方法でSSH接続を行うには、EC2インスタンスにアタッチされているセキュリティグループで、SSH(TCPポート22)のインバウンド通信が許可されている必要があります。セキュリティを確保するため、接続元のIPアドレス(ご自身のローカル環境のグローバルIPアドレス)のみからのアクセスを許可するように、セキュリティグループのルールを設定することを忘れずに。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?