2025.08.28
【体験談】Amazon Linux 2でMySQLインストール時のOpenSSL・GPG key エラーにハマった話
2025.08.28
AWS【AWS】SSMポートフォワーディングとInstance Connectを利用したプライベートEC2へのSSH接続手順
EC2 Instance Connectは、SSH公開鍵を一時的にEC2インスタンスへ登録することで、安全かつ簡単にSSH接続するためのAWSのサービスです。
従来必要だった「SSHキーペア(秘密鍵)」を手元で永続的に管理する必要がなくなり、よりセキュアにインスタンスを運用できるのが大きな特徴です。
【参照】
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-connect-methods.html
本来であればprivateサブネット内のEC2に接続するためにはEC2 Instance Connect Endpoint というVPC内の専用中継点を作成する必要がありますが、本手順では SSM Session Manager のポートフォワーディング機能 を利用してPCとEC2間の安全なトンネルを確立することで、EC2 Instance Connect Endpoint の作成を行わなくても接続が可能となります。
ここではaws cliの設定(プロファイルの作成)を記載していますが、これができている場合は次の
【Instance Connect設定とポートフォワーディングによるSSH】
までスキップしてください。
PowerShell、またはお手元のシェル実行環境でAWS CLIが実行できるようご準備ください。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
確認
aws --version
実行結果例:
aws-cli/2.15.38 Python/3.11.8 Windows/10 exe/AMD64 prompt/off
各自のアクセスキーを用意します。
マネジメントコンソールにログインの上、以下の手順で事前にアクセスキーをご用意ください。
[IAM] – [ユーザー] – [(自身のユーザー名)] – [セキュリティ認証情報] – [アクセスキー] – [アクセスキーを作成]
例)
aws configure --profile hogehoge-stg
AWS Access Key ID [None]: アクセスキーを入力
AWS Secret Access Key [None]: シークレットアクセスキーを入力
Default region name [None]: ap-northeast-1
Default output format [None]: json
aws s3 ls --profile hogehoge-stg
S3バケットの一覧が返れば疎通はOKです。
※ここではhogehoge-stgという名前で作成します
ssh-keygen -t rsa -b 4096 -f ~/.ssh/hogehoge-stg
これで秘密鍵 hogehoge-stg
と公開鍵 hogehoge-stg.pub
が作成されます。
コマンド
aws ec2-instance-connect send-ssh-public-key \
--region <リージョン> \
--instance-id <インスタンスID> \
--instance-os-user <OSユーザー名> \
--ssh-public-key file://<公開鍵ファイルのパス> \
--profile <プロファイル名>
実行例
aws ec2-instance-connect send-ssh-public-key \
--region ap-northeast-1 \
--instance-id i-0xxxxxxxxxxxxxxxx \
--instance-os-user ec2-user \
--ssh-public-key file://~/.ssh/hogehoge-stg.pub \
--profile hogehoge-stg
成功時のレスポンス
{
"RequestId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx",
"Success": true
}
これで、認証用の一時的な公開鍵がEC2に登録されました。
※注意:登録された公開鍵は60秒で失効します。以降の手順は60秒以内に実行してください。
コマンド
aws ssm start-session \
--target <インスタンスID> \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["22"],"localPortNumber":["10022"]}' \
--profile <プロファイル名>
実行例
aws ssm start-session \
--target i-0xxxxxxxxxxxxxxxx \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["22"],"localPortNumber":["10022"]}' \
--profile hogehoge-stg
成功時のレスポンス
Starting session with SessionId: your-session-id
Port 10022 opened for sessionId your-session-id.
Waiting for connections...
この状態になればトンネルが確立しています。
このターミナルは起動したままにして、SSHコマンドは別の新しいターミナルで実行してください。
新しいターミナルを開き、以下のコマンドを実行します。
■ sshの例
ssh -p 10022 -i ~/.ssh/hogehoge-stg ec2-user@127.0.0.1
■ scpの例
scp -P 10022 -i ~/.ssh/hogehoge-stg test.txt ec2-user@127.0.0.1:/tmp/
※上記の情報(秘密鍵の配置場所)があればWinSCPによる接続も可能です。その場合、以下の設定で接続してください。
127.0.0.1
10022
ec2-user
~/.ssh/hogehoge-stg
)を選択します。【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
1
2025.08.28
【体験談】Amazon Linux 2でMySQLインストール時のOpenSSL・GPG key エラーにハマった話
2
2025.08.28
【AWS】SSMポートフォワーディングとInstance Connectを利用したプライベートEC2へのSSH接続手順
3
2025.07.24
Log::info()が使えない!?Laravel.logのPermission denied エラーを解決する(Docker環境)
4
2025.06.24
AWS RDSの「マイナーバージョン自動アップグレード」について
5
2025.06.19
クエリ最適化だけで満足していませんか?SQLパフォーマンスチューニングの新視点
タグ検索