[小ネタ] ECS コンテナインスタンスに SSH 接続してみた

コンテナインスタンスの IP アドレス確認以外は一般的な EC2 への接続手順と同じです。
2023.08.24

アノテーション・テクニカルサポートチームの hato です。

「トラブルシューティングのため ECS コンテナインスタンスに SSH 接続したいのですが、まず IP アドレスはどこから確認できますか」といったご質問を頂くことがあるので、実際に SSH 接続をやってみました。

前提条件

  • SSH で接続するには、コンテナインスタンスへのネットワーク経路が必要です。
  • コンテナインスタンスにはキーペアが設定されている必要があります。
  • SSH ではポート22番を使用し、セキュリティグループやネットワーク ACL を許可しておく必要があります。

なお、Linux インスタンス向けとなり、Windows インスタンスの場合は、次の AWS ドキュメントをご確認ください。

やってみた

まず、接続に必要なインスタンスの IP アドレスを確認します。

Amazon ECS コンソールの「クラスター」からインスタンスが含まれるクラスターを選択します。

「インフラストラクチャ」タブを選択します。

「コンテナインスタンス」セクションから接続したいコンテナインスタンスをクリックします。

コンテナインスタンスの「パブリック IP」を確認します。
※踏み台サーバ経由等のプライベート接続の場合は「プライベート IP」を使用します。

SSH クライアントを使用して、確認したパブリック IP アドレスに接続します。

コマンド例

ssh -i 【プライベートキー】 【コンテナインスタンスのユーザ名】@【確認したパブリック IP】

# 例
ssh -i /home/hato/KeyPair.pem ec2-user@198.51.100.1

※コンテナインスタンスのユーザ名は環境によって異なり、デフォルトのユーザー名は次の通りです。

Linux インスタンスのユーザーアカウントを管理する - Amazon Elastic Compute Cloud

デフォルトのユーザー名は以下のとおりです。

  • Amazon Linux 2023、Amazon Linux 2 または Amazon Linux AMI の場合、ユーザー名は ec2-user です。
  • Centos AMI の場合、ユーザー名は centos または ec2-userです。
  • Debian AMI の場合は、ユーザー名は admin です。
  • Fedora AMI の場合、ユーザー名は fedora または ec2-user です。
  • RHEL AMI の場合、ユーザー名は ec2-user または root です。
  • SUSE AMI の場合、ユーザー名は ec2-user または root です。
  • Ubuntu AMI の場合、ユーザー名は ubuntu です。
  • SUSE AMI の場合、ユーザー名は ec2-user です。
  • Bitnami AMI の場合は、ユーザー名は bitnami です。
  • それ以外の場合は、AMI プロバイダーに確認してください。

※「Amazon ECS に最適化された AMI」の場合ec2-userです。
※Bottlerocket AMI の場合、SSH サーバが含まれないため、直接 SSH 接続はできません。
詳細:Bottlerocket AMI のコンテナインスタンスに SSH 接続する方法を教えてください | DevelopersIO

参考資料

Bottlerocket イメージには、SSH サーバーまたはシェルは含まれません。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。