Slide 1

Slide 1 text

【AWS】AWS10分LT会 - VOL.5 プライベートサブネットにあるLINUX EC2からファイル を手元のMACに持ってくる方法 2024/10/23 野崎 高弘

Slide 2

Slide 2 text

アジェンダ 2 1 自己紹介 2 目的・やりたいこと 3 対象となる技術 4 条件(導入に当たっての前提事項 5 構成図 6 事前作業 7 手順 8 注意事項 9 まとめ

Slide 3

Slide 3 text

目次 3 自己紹介 野崎 高弘(のざき たかひろ) ・仕事:前職まではインフラ構築・保守やSOCセキュリティアナリスト 現在は見積もり、提案などのドキュメント作業や技術検証が主のインフラエンジニア ・趣味:資格取得、犬の散歩、ドラマ鑑賞、巨人ファン ・資格:現在、AWS・GCP全冠、その他100種以上保持の資格オタク ・2024年3月『AWS認定 高度なネットワーキング-専門知識(ANS-C01)完全対応テキスト』 執筆(2章、巻末模擬問題担当) ・主な受賞歴 2023 Japan AWS All Certifications Engineers 2024 Japan AWS All Certifications Engineers 2024 Japan AWS Top Engineers(Networking)

Slide 4

Slide 4 text

目次 4 目的・やりたいこと みなさんはEC2にあるファイルを、手元のローカル物理PC(Macなど、以下PC)にコピーした いと思ったことはないでしょうか?それには色々な方法があるようで、EC2のOSの種類、パブ リック/プライベートによって決まってきます。 パブリックサブネットにある場合 EC2にパブリックIPが付いてるならこれはもう楽です。WindowsならRDPでログインしてコピ ペで取ってこれますし、Linuxならscpコマンドが使えます。 ・ scp -i [秘密鍵のパス] [ユーザー名]@[パブリックIP]:[EC2のダウンロード元のパス] [ローカル のダウンロード先のパス]

Slide 5

Slide 5 text

目次 5 目的・やりたいこと プライベートサブネットにある場合 EC2にプライベートIPしか付いていない場合(一般的にはこちらのケースの方が圧倒的に多いと 思います)、少し厄介です。 1.S3に一時的にコピーしてからPCにダウンロード LinuxならSSMでログインし、S3にアップロードするという手が使えます。 例えば、以下はEC2のカレントディレクトリにあるaaaファイルを、S3のnozaki-uploadバケッ トにアップロードするaws s3 cpコマンドです。 ・ $ aws s3 cp ./aaa s3://nozaki-upload/ upload failed: ./aaa to s3://nozaki- upload/aaa Unable to locate credentials

Slide 6

Slide 6 text

目次 6 目的・やりたいこと ところが、aws configureコマンドなどでEC2にクレデンシャル情報を登録していない場合、 「Unable to locate credentials」(認証情報が見つかりません)というエラーが出てきてしま います。 このため、新しいEC2でファイルをコピーする度に認証情報を設定するのは、セキュリティ上抵 抗があるという問題が生じます。

Slide 7

Slide 7 text

目次 7 目的・やりたいこと 2.EICエンドポイントを使ってログイン プライベートサブネットのEC2にログインする方法として、EIC(EC2 Instance Connect)エ ンドポイントが比較的最近できました。これであればLinuxでもWindowsでもログインできます。 ただし、 • EICエンドポイント(VPCエンドポイント)を作成する必要がある • コマンドが煩雑になりがち 例) という問題があります。 そこで、本LTではSession Manager(SSM)のポートフォワーディング機能を使った比較的簡 単な方法をご紹介します。 $ scp -i nozaki-key.pem -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-0123456789abcdef' ./aaa.txt ec2-user@i-0123***:/home/ec2-user/

Slide 8

Slide 8 text

目次 8 対象となる技術 • AWS Systems Manager Session Manager(SSM) • SSHポートフォワーディング

Slide 9

Slide 9 text

目次 9 条件(導入にあたっての前提事項) • EC2にSSMアクセスを許可するインスタンスプロファイルが割り当てられていること • PCとEC2インスタンス間でファイルを端末転送するためには、AWS CLIにてSSMのポート フォワーディング機能を使用できるようにする必要があります。このため、PCにあらかじめ AWS CLIをインストールしておく必要があります。

Slide 10

Slide 10 text

目次 10 構成図

Slide 11

Slide 11 text

目次 11 事前作業 PCにSession Managerプラグイン(PCからSession ManagerでEC2へSSMログインするための ツール)をインストールします。 これはあらかじめAWSの公式S3バケットにzipファイル用意されているため、ダウンロードして unzipで解凍し、用意されたinstallスクリプトを実行してインストールします。 次のスライドにその一連の様子を載せています(文字が小さくてすみません) 以降の作業も全てPC上で行います。

Slide 12

Slide 12 text

目次 12 事前作業 % curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3822k 100 3822k 0 0 1274k 0 0:00:02 0:00:02 --:--:-- 1274k % unzip sessionmanager-bundle.zip Archive: sessionmanager-bundle.zip creating: sessionmanager-bundle/ inflating: ***** extracting: sessionmanager-bundle/VERSION % sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager- plugin Password: Creating install directories: /usr/local/sessionmanagerplugin/bin Creating Symlink from /usr/local/sessionmanagerplugin/bin/session-manager-plugin to /usr/local/bin/session- manager-plugin Installation successful!

Slide 13

Slide 13 text

目次 13 手順 1.EC2に対してSSMでポートフォワード設定を行う PCで以下のコマンドを実行し、SSM経由でPCのローカルポート10022/TCPを対象EC2の 22/TCPに転送するトンネルを確立させます。 % aws ssm start-session --target i-0123456789abcdef --document-name AWS- StartPortForwardingSession --parameters '{"portNumber":["22"], "localPortNumber":["10022"]}' --no-verify urllib3/connectionpool.py:1063: InsecureRequestWarning: Unverified HTTPS request is being made to host 'ssm.ap-northeast-1.amazonaws.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced- usage.html#ssl-warnings Starting session with SessionId: nozaki-89**** Port 10022 opened for sessionId nozaki-89****. Waiting for connections...

Slide 14

Slide 14 text

目次 14 手順 コマンド実行後はSSHクライアントの接続待ち状態となるので転送完了まで端末はそのままとし ます。 2.EC2から欲しいファイルをPCに転送する PCのSCP/SFTPクライアントソフトウェアにてポートフォワード設定したローカルポートに対し て接続を行います。 例)scpコマンドの場合 # scp -i nozaki.pem -o IdentitiesOnly=yes -P 10022 [email protected]:/home/ec2- user/aaa ./ The authenticity of host '[127.0.0.1]:10022 ([127.0.0.1]:10022)' can't be established. ED25519 key fingerprint is SHA256:G********* This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[127.0.0.1]:10022' (ED25519) to the list of known hosts. aaa 100% 3517 25.3KB/s 00:00

Slide 15

Slide 15 text

目次 15 注意事項 このコマンドを何度も使っていると、以下のような警告が出ることがあります。 その際は /var/root/.ssh/known_hosts を開き、「[127.0.0.1]:10022」で始まる行を一旦全 て削除してください ホストキーが変更されたので、中間者攻撃による盗聴などがされている可能性があることを警告 しています。 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the E**** key sent by the remote host is SHA256:*******. Please contact your system administrator. Add correct host key in /var/root/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /var/root/.ssh/known_hosts:2 Host key for [127.0.0.1]:10022 has changed and you have requested strict checking. Host key verification failed. scp: Connection closed100% 3517 25.3KB/s 00:00

Slide 16

Slide 16 text

目次 16 注意事項 その際は /var/root/.ssh/known_hosts を開き、次のような「[127.0.0.1]:10022」で始まる 行を一旦全て削除してください。 その後再接続し、 と出ればOKです。 Warning: Permanently added '[127.0.0.1]:10022' (ED25519) to the list of known hosts. [127.0.0.1]:10022 ssh-ed12345 XXXX ssh-ed12345 YYYY

Slide 17

Slide 17 text

17 まとめ パブリックサブネット Windows Linux RDPしてからコピペ SCPコマンド プライベートサブネット EICエンドポイント経由 SSMポートフォワーディング EC2のOS サブネット まとめ EC2のOSの種類、サブネットがパブリック/プライベートによって、ファイルコピー手段が次 のように変わってきます。

Slide 18

Slide 18 text

18 色々拙いところはあったかと思いますが ご清聴ありがとうございました (なお、本LTの内容はあくまで個人見解の技術的調査・検証であり、私の所属する会社等は一歳 関係ありません)