はじめに
概要
本記事は、AWSのEC2インスタンスへSSHで接続する手順をわかりやすくまとめたガイドです。接続方法の比較、接続に必要な準備、セキュリティグループの設定、各OS別の接続手順(Mac/Linux、Windows、AWSコンソール)、そしてプライベートサブネット内の接続方法まで順を追って解説します。
本記事の目的
- 適切な接続方法を選べるようにする
- 鍵やセキュリティ設定の準備ができるようにする
- 実際にSSH接続を行えるようにする
- プライベートサブネット内のインスタンスへ安全に接続する手順を理解する
対象読者
- EC2に接続したい初心者から中級者
- 基本的なターミナル操作やAWSコンソールの操作に慣れていると読みやすいです
読み方のポイント
各章は順番に進めることをおすすめします。実際の操作は慎重に行い、秘密鍵の管理やセキュリティ設定は特に注意してください。
AWS EC2に接続する3つの方法とSSH接続の特徴
概要
AWS EC2に接続する代表的な方法は次の3つです:SSH、Session Manager、EC2 Instance Connect(EIC)。用途や運用方針に応じて使い分けます。
1. SSH(伝統的な方法)
SSHは秘密鍵と公開鍵を使う接続です。ローカルで秘密鍵(例:.pemファイル)を保管し、EC2側に公開鍵を置きます。ターミナルからsshコマンドで接続します。例:ssh -i mykey.pem ec2-user@IP
長所:広く使われており、ツールや手順が豊富です。短所:秘密鍵の管理が必要で、間違えるとリスクになります。
2. Session Manager(Systems Manager)
Session Managerはインバウンドのポートを開かずにブラウザやAWS CLIから接続できます。EC2にSSM Agentが入っていることが前提です。長所:鍵管理不要で監査ログも取りやすいです。短所:事前のセットアップが必要です。
3. EC2 Instance Connect(EIC)
EICは一時的に公開鍵を生成して接続します。ユーザー側で長期の鍵を持たずに済み、短時間のアクセス向けに便利です。長所:鍵の配布負担が軽いです。短所:対応OSや設定に制約があります。
SSH接続の特徴(まとめ)
- 認証:秘密鍵による公開鍵認証を使います。安全性は高いですが鍵の保管が重要です。
- 通信:暗号化されたチャネルで通信します。パスワードより安全です。
- 運用:自動化ツールや既存ワークフローと相性が良いです。鍵管理とセキュリティルールの運用が必要です。
SSH接続の前提条件と準備
前提条件(接続前に必ず確認すること)
- インスタンスが「起動中」でステータスチェックに合格していること。
- 接続先のパブリックIPv4アドレスまたはパブリックDNS名を把握していること。
- セキュリティグループでTCPポート22のインバウンドが許可されていること。
1. キーペア(秘密鍵)の作成と権限設定
- EC2作成時にキーペアを作成します。ダウンロードしたファイル(例: key.pem)を安全に保管してください。
- Linux/Macでは権限を設定します: chmod 400 key.pem。これでSSHが秘密鍵を受け入れます。
- WindowsではPuTTYを使う場合、PuTTYgenで.pemを.ppkに変換してください。
2. パブリックIPの有効化
- インスタンスにパブリックIPが割り当てられているか確認します。割り当てがない場合、Elastic IPを関連付ける方法が便利です。
3. セキュリティグループの確認
- インバウンドルールに「ポート22、プロトコルTCP、送信元IP(例: 自分のIP/32)」があるか確認してください。広く開けると危険なので、可能な限り自分のIPだけを許可します。
4. 接続情報の例
- Linux/Mac: ssh -i key.pem ec2-user@<パブリックIP>
- Ubuntu: ssh -i key.pem ubuntu@<パブリックIP>
- Windows(PuTTY): 変換した.ppkを指定して接続します。
接続前の最終チェック
- インスタンスの状態、鍵のパーミッション、セキュリティグループ、接続先アドレスを再確認してください。これらが整っていれば、次章で実際の接続手順に進めます。
セキュリティグループの設定方法
設定の要点
SSHで接続できるようにするには、セキュリティグループのインバウンドに「タイプ: SSH」「プロトコル: TCP」「ポート範囲: 22」を追加し、ソースに接続元のパブリックIPを指定します。アウトバウンドはデフォルト(全許可)のままで問題ありません。
コンソールでの具体的手順
- AWSコンソールで「EC2」→「セキュリティグループ」を開きます。
- 対象のセキュリティグループを選び、「インバウンドルールを編集」をクリックします。
- ルールを追加:タイプで「SSH」、ポート22、プロトコルは自動でTCPになります。
- ソース欄に接続元のIPをCIDR形式で入力(例: 203.0.113.45/32)。入力後に保存します。
- セキュリティグループをEC2インスタンスに適用しているか確認します。
接続元IPの調べ方と指定方法
接続元が自宅や職場の固定IPなら、そのIPを/32で指定します。自分のグローバルIPは「what is my IP」等のサイトで確認できます。IPが動的に変わる場合は、都度ルールを更新するか、Elastic IPやVPNの利用を検討してください。
注意点と推奨設定
- 0.0.0.0/0(全世界許可)は避けてください。リスクが高くなります。
- 必要なら特定のネットワークレンジだけ許可するか、踏み台(bastion)を使ってアクセスを限定してください。
- ルール追加後に接続できない場合、インスタンスのOS側ファイアウォール(iptables/ufw)やキーペアの設定も確認してください。
SSH接続の実行方法
前提:鍵ファイルの取り扱い
キーペア(.pem)ファイルは厳重に保管します。パーミッションは必ず制限してください(例:chmod 400 mykey.pem)。公開鍵はEC2側に登録済みである必要があります。共有や公開は避け、バックアップは安全な場所に保管します。
Mac / Linux での接続手順
- ターミナルを開きます。
- 鍵の所有権と権限を確認します(chmod 400 mykey.pem)。
- 接続コマンドを実行します。例:ssh -i mykey.pem ec2-user@203.0.113.10
- ユーザー名はAMIにより異なります(Amazon Linux: ec2-user、Ubuntu: ubuntu、RHEL: ec2-user など)。
- 初回はホスト鍵の確認メッセージが出ます。指示に従って続行してください。
Windows(PuTTY)での接続手順
- PuTTYgenで.pemを.ppkに変換します(Load → PEMファイルを選択 → Save private key)。
- PuTTYを開き、Host Name欄にec2-user@IPアドレスを入力するか、IPを入力してUserを設定します(Connection→DataでAuto-login usernameを指定可)。
- 左メニューのSSH→Authで先ほど生成した.ppkを指定します。
- Openで接続します。
AWSマネジメントコンソールからの接続
EC2画面の該当インスタンスを選び「接続」ボタンを押すと、推奨コマンドが表示されます。表示されたsshコマンドをコピーしてローカルで実行できます。ブラウザベースの接続機能が使える環境もあります。
よくあるトラブルと対処法
- Permission denied (publickey):鍵ファイルが間違っているか権限が緩すぎます。鍵とユーザー名を再確認してください。
- Connection timed out:セキュリティグループでSSH(ポート22)が許可されているか、インスタンスのパブリックIPが有効か確認します。
- Host key verification failed:以前とホスト鍵が変わった可能性があります。known_hostsを確認して不要な古いエントリを削除してください。
上記手順でまず接続を試みてください。必要なら実際のコマンドや画面例をお送りします。
プライベートサブネット内のEC2への接続方法
概要
プライベートサブネット内のEC2に接続する代表的な方法は三つです。
1) NAT Gateway経由でインターネット接続(主にアウトバウンド)
2) VPCネットワーク内で直接接続(VPNや専用線、VPCエンドポイントを利用)
3) 踏み台サーバー(Bastion Host)を経由したSSH接続
1. NAT Gateway経由(注意点)
NAT Gatewayはプライベートサブネットからの外向き通信(例: OSやパッケージのアップデート)を可能にします。外部から直接SSHで入ることはできません。設定はプライベートのルートテーブルで0.0.0.0/0をNATに向け、セキュリティグループは必要なアウトバウンドを許可します。
2. VPC内で直接接続する方法
社内ネットワークからVPCへVPNやDirect Connectで接続すると、プライベートIPでEC2にアクセスできます。VPCエンドポイントはAWSサービスとの通信をAWSネットワーク内に留めますが、外部端末から直接SSHするには、まずネットワーク経路(VPN等)を確立する必要があります。ルートテーブルとセキュリティグループでアクセス元のCIDRを許可してください。
3. 踏み台サーバー(Bastion)の使い方
踏み台はパブリックサブネットに置き、管理者のIPだけSSHを許可します。プライベート側のEC2は踏み台のセキュリティグループからのSSHを許可します。例:
– シンプル: ssh -i bastion.pem ec2-user@bastion-public-ip
– ProxyJump例: ssh -o “ProxyCommand=ssh -i bastion.pem -W %h:%p ec2-user@bastion-public-ip” -i private.pem ec2-user@private-ip
セキュリティを高めるため、踏み台の鍵は厳重に管理し、不要なユーザーはアクセス権を外してください。
設定チェックリスト
- プライベートのルートがNATまたはVPNへ向いている
- セキュリティグループが最小限の許可のみ設定されている
- キーペアや認証情報を適切に管理している
以上のポイントを押さえれば、安全にプライベートサブネット内のEC2へ接続できます。












