🐤

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

に公開

概要

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