Amazon Ec2

RedHat系OS(AlmaLinuxとか)にEC2 Instance Connectで接続出来るようにする方法

概要

こんにちは、SRE課の栩野です。

EICシリーズ3本目、今回はAmazon Linux 2ではなくAlmaLinuxでEIC接続出来るようにする方法になります。

ディーネットではAmazon Linux 2以外にもAlmaLinux等のRedHat系のOSを利用する機会が多くあるので、運用でAlmaLinuxでもEIC接続できたら便利だなー。と思い、今回実際に使えるかどうか検証してみました。

ちなみにEC2 Instance ConnectのAWSドキュメントを見ると、、、

Amazon Linux 2 2.0.20190618 以降とUbuntu 20.04 以降のAMIには、EC2 Instance Connectがプリインストールされており
Amazon Linux 2 (すべてのバージョン)とUbuntu 16.04 以降がサポート対象として記載されており、AlmaLinux等のOSはサポート対象として記載はされていませんでした。

EC2 インスタンスでの EC2 Instance Connect のインストール

検証結果

結果として、AlmaLinuxでもEIC接続を使ってEC2に接続することができました!
またEICエンドポイントを介して、プライベートサブネットのEC2にも接続出来ました!

Red Hat Enterprise Linuxの8系でも問題なくEICをインストールして使えたので、恐らくその他のRedHat系OSでも問題なく使えるかと思います。

ただdnfやyumを使ってインストールはできないので、検証で導入した時の手順をご紹介します。

導入手順

前提

今回OSは AlmaLinux release 8.8 (Sapphire Caracal) を使って検証しています。
※AMIは ami-027abaaf97b9d3301 を使用しました。

EC2での作業

  1. EICの導入事前準備
    EICのセットアップに必要なパッケージ一式を下記コマンドでインストールします。
$ sudo yum install -y rpm-build make git python3
  1. EICパッケージのダウンロード
    GitHubのリポジトリからEICパッケージをダウンロードします。
$ git clone https://github.com/aws/aws-ec2-instance-connect-config.git
  1. ビルドとインストール
    下記コマンドでダウンロードしたパッケージのビルドとインストールを実行します。
$ cd aws-ec2-instance-connect-config
$ sudo make rpm
$ sudo rpm -ivh rpmbuild/RPMS/noarch/ec2-instance-connect-1.1-18.noarch.rpm

※パッケージのバージョンはその時のバージョンに合わせて変更

次にssh_configに、EIC接続で必要な設定を追記します。

$ sudo echo -e '\n# EC2 Instance Connect configuration\nAuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f\nAuthorizedKeysCommandUser ec2-instance-connect' | sudo tee -a /etc/ssh/sshd_config

sshdを再起動して設定を反映させます。

$ sudo systemctl restart sshd

ちなみにSELinuxが有効だとEIC接続が行えないので、とりあえずコマンドで無効化しておきます。
恒久的に無効化する場合は、SELinuxのconfigファイルを書き換えてEC2を再起動してください。

$ sudo setenforce 0

恒久的に無効化する場合

$ sudo vi /etc/selinux/config
    SELINUX=enforcing
    ↓ 下記に書き換え ↓
    SELINUX=disabled

// 再起動で反映
$ sudo shutdown -r now

EICの接続準備はこれで完了しました。

接続確認

ではでは、とりあえずAWSマネージドコンソールからEIC接続を試してみます。

EC2のサービス画面から、対象EC2にチェックを入れて[接続]をクリックします。

EC2 Instance Connectのタブから、[EC2 Instance Connect を使用して接続する]を選択し、ユーザー名に[ec2-user]を入力し[接続]をクリックします。
※パブリックIPとセキュリティグループでSSHポートの開放が必要

無事EIC接続できるようになりました!

EICエンドポイントを作成すれば、プライベートサブネットでもEIC接続できることも確認済みです。

↓EICエンドポイントの設定は下記記事に記載してます。
EC2 Instance Connect Endpointを使ってEC2に接続してみた

さいごに

RedHat系のOSでEICの利用を検討されている方がいれば是非とも参考になれば嬉しく思います。

以上、最後まで見ていただきありがとうございました!

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA