🐤

AWS EC2へのSSH接続: Duck DNSを使った動的ドメイン設定

2023/08/16に公開

概要

AWS EC2のインスタンスにElastic IPを使用せずにSSH接続する方法を紹介します。無料の動的ドメインサービスDuck DNSを利用して、動的に変わるIPアドレスでも安定して接続できるように設定します。

目次

  1. はじめに
  2. 実行環境
  3. SSH接続の基本設定
  4. Duck DNSの導入
  5. ddclientのインストールと設定
  6. ドメイン名でSSH接続するように変更
  7. まとめ

1. はじめに

Elastic IPを使用せず、動的ドメインサービスを使ってAWS EC2にSSH接続する方法についてまとめてみました。

2. 実行環境

  • インスタンスタイプ: t2.micro (無料枠)
  • OS: Ubuntu 22.04 LTS

3. SSH接続の基本設定

SSH接続のための基本的な設定を行います。

~/.ssh/config
Host aws_test
    User ubuntu
    HostName [インスタンスのパブリックIP]
    Port 22
    IdentityFile [ダウンロードした秘密鍵のパス]

4. Duck DNSの導入

Duck DNSは、無料で利用できる動的ドメインサービスです。このサービスを利用することで、AWS EC2のインスタンスの動的IPアドレスを固定のドメイン名に関連付けることができます。Duck DNSの公式サイトからサインアップを行い、ドメイン名を取得してください。本記事では、サインアップの手順は割愛します。

5. ddclientのインストールと設定

Duck DNSとの連携を実現するために、ddclientというツールをインストールします。このツールは、動的IPアドレスの変更を検出し、Duck DNSに自動で更新を通知する役割を果たします。

$ sudo apt install ddclient

インストール後、設定画面が表示されます。

  • 動的DNSサービスの選択: ここではduckdns.orgを選択します。
    サービス選択

  • ユーザ名の入力: Duck DNSでの登録時に使用したユーザ名を入力します。私はGoogleアカウントでの登録したので、gmailアドレスを入力しました。
    ユーザ名

  • トークンの入力: Duck DNSのダッシュボードに表示されるトークンを入力します。このトークンは、ddclientがDuck DNSのサービスと連携するための認証情報として使用されます。
    トークン

  • IP発見方法の選択: IPアドレスの検出方法を選択します。EC2インスタンスはNATされてるっぽいのでWeb-based IPを選びます。
    IP発見方法

  • ドメイン名の設定: Duck DNSで取得したドメイン名(*.duckdns.org)を入力します。複数のドメイン名を持っている場合は、カンマで区切って入力します。
    ドメイン名

設定が完了したら、Duck DNSにアクセスし、current ipがEC2のパブリックIPと一致していることを確認します。一致していれば、設定は正しく完了しています。
確認

6.ドメイン名でSSH接続するように変更

Duck DNSで設定したドメイン名を利用してSSH接続する設定を行います。

~/.ssh/config
Host aws_test
    User ubuntu
    HostName [自分で決めたドメイン名(*.duckdns.org)]
    Port 22
    IdentityFile [ダウンロードした秘密鍵のパス]

7.まとめ

本記事では、Elastic IPを使用せずにDuck DNSを利用してAWS EC2へのSSH接続を行う方法を紹介しました。これにより、インスタンスのIPアドレスが変わっても、都度設定を変更することなくSSH接続が可能となります。

Discussion