やってみた~aws-ec2-sshでEC2の踏み台サーバのユーザ管理を楽にする~
タイトルの通り
Qiitaをつらつら眺めてたら面白そうな投稿があったので試しにやってみようと思います。
↓元記事
対象EC2インスタンスにssh接続してaws-ec2-sshをインストール
git clone https://github.com/widdix/aws-ec2-ssh.git
git入ってないからコマンド使えないよとエラーが出力される そりゃそうですね
なので先ずこのインスタンスにGitを入れるところから
Gitインストール
参考
Amazon Linuxにgit最新版をソースから入れる | OpenGroove
ライブラリのインストール
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc
ディレクトリを移動してダウンロード
折角なのでここから最新バージョンを探して入れてく(2018/12/8現在)
最新はgit-2.19.2
の模様
cd /usr/local/src/ pwd wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz
/usr/local/
システム管理者がコンパイルしたアプリケーションをインストールする場所
/usr/local/src/
ソースコードの保存場所
無事ダウンロードできました
tar.gzの解凍
tar -zxvf git-2.19.2.tar.gz
-z : zip形式で圧縮されたアーカイブを展開する
-x :アーカイブからファイルを抽出する
-v :処理したファイルを詳しく出力する
-f :アーカイブファイル名を指定する
解凍できました
ディレクトリの移動
cd git-2.19.2
Gitのソースをコンパイルする
make prefix=/usr/local all
ずらずらと色々出てきてプロンプトが返ってきたら
make prefix=/usr/local install
またずらずら〜と色々表示されてプロンプトが返ってくるのを待つ
設定の読み込み
source /etc/profile
バージョン確認
git --version
無事git-2.19.2
をインストール出来ました。
改めてaws-ec2-sshをインストール
git clone https://github.com/widdix/aws-ec2-ssh.git
今度は上手くいきました!
ディレクトリを移動してシェルを実行
cd aws-ec2-ssh ./install.sh
また、エラーが返ってきたので、調べます
どうやらインスタンス作成時に適用していたIAMロールでは実行出来ない模様。 必要なポリシーを盛り込んだIAMロールを作ってきます
IAMロールの作成
AWSコンソールでIAMを選択
[ロールの作成]を選択
信頼されたエンティティの種類を選択で[AWSサービス]を選択
このロールを使用するサービスを選択で[EC2]を選択
[次のステップ:アクセス権限]を押下
ポリシーのフィルタで[IAM]を入力
[IAMReadOnlyAccess]を選択して[次のステップ:タグ]へ
タグを適当に設定して確認画面で[ロール名]を入力して[ロールの作成]を押下
EC2ダッシュボードへ移動して対象のEC2を選択
[アクション]より[インスタンスの設定]→[IAMロールの割り当て/置換]を選択
先程作成したIAMロールを選択して[適用]を押下
この状態で再度シェルを実行
./install.sh
上手くいった
IAMロール適用
次手順でIAMロール適用があった模様…
先程作成したIAMのポリシーをJSON形式で編集します。
IAMロール画面へ移動して先程作成したIAMロールを選択して、右端の[x]を押下して既存ポリシーをデタッチ
インラインポリシーの追加を押下
JSONを選択して以下を貼り付け
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListSSHPublicKeys", "iam:GetSSHPublicKey", "iam:GetGroup" ], "Resource": [ "arn:aws:iam::*:user/*", "arn:aws:iam::*:group/*" ] }, { "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "*" } ] }
IAMのJSON記述等は公式参照
IAM JSON ポリシーエレメントのリファレンス - AWS Identity and Access Management
IAM JSON ポリシー言語の文法 - AWS Identity and Access Management
貼り付けたら[Review Policy]→[Create Policy]を押下
EC2にインスタンス適用
※既に適用されているIAMロールを編集したからそのままでOK
IAMグループ作成
IAMのナビゲーションペインから[グループ]を選択
[新しいグループの作成]を押下
適当にグループ名を入力(記事元ならってmembersとadminsを作成)
[次のステップ]→[次のステップ]→[グループの作成]を押下
グループ作成完了
IAMユーザの作成
元記事にならって↓な感じに作っていく
ユーザ名 | 所属グループ |
---|---|
kuma | admins,members |
hedgehog | members |
IAMのナビゲーションペインから[ユーザー]を選択
[ユーザーを追加]を押下し、ユーザ名を入力
AWSアクセスの種類は一端[プログラムによるアクセス]にチェック
[次のステップ:アクセス権限]
ユーザをグループに追加で上記表に該当するグループを選択
[次のステップ:タグ]で任意のタグを入力
[次のステップ:確認]→[次のステップ:ユーザー作成]を押下
csvをダウンロード
SSH公開鍵の登録
公開鍵の作成あたっての公式参考
Linux, macOS, or Unix 上で AWS CodeCommit リポジトリに SSH 接続するために必要なセットアップ手順 - AWS CodeCommit