LoginSignup
1
1

EC2インスタンスにSession Manager経由でSSH接続する

Last updated at Posted at 2024-06-30

EC2インスタンスにSession Manager経由でSSH接続する

Session Maneger経由でSSH接続することのメリット

  • 接続対象のインスタンスにPublic Ipを付与する必要がない
  • 踏み台Instance(Bastion)を必要としない → Private Subnet内のインスタンスに直接接続可能
  • AWSによるCredential認証と公開鍵認証の2段階認証になる
  • Cloudtrailに接続ログが残る

EC2インスタンス側で必要な設定

EC2インスタンスを作成する

  • キーペア(公開鍵)を作成する

    • 必ずpemファイルをダウンロードしておくこと
    • 既存のキーペアがある方は流用してもOK
      image.png
  • EC2インスタンスをインターネットにアウトバウンド可能に

    • 適切な Vpc,IGW,SGの設定を行う(ここは他記事に譲る)
    • Public Ipを取得する必要はない
      image.png
  • EC2インスタンスにSSM Agentを立ち上げるためのInstance Roleを付与する

    • 基本的にはAmazonSSMRoleForInstancesQuickSetupをアタッチ
    • カスタムなRoleが必要な際にはそのRoleにAmazonSSMManagedInstanceCoreをアタッチした上で作成すること
      image.png

クライアント側で必要な設定

awscliのセットアップ

インストール

credentialの設定

  • aws configureを実行して,credentialなどを設定する
    • この際に,アクセスキーやシークレットアクセスキーが必要
    • 未取得の人は → 公式ドキュメントなど参照
    • これが完了すると,~/.aws/config~/.aws/credentialsが作成されているはず

SSHの設定

pemファイルの配置

  • ~/.ssh/xxx.pemなどわかりやすい場所にEC2インスタンスにアタッチしたキーペアのpemファイルを配置

EC2インスタンスの確認

  • 作成したEC2インスタンスのinstance-idを確認しておく(eg. i-0220655452xxxxxx)

configの作成

  • ~/.ssh/configを作成する
    • 内容はいかを参考に
~/.ssh/config
Host {YOUR_PREFERRED_NAME}
  HostName {YOUR_INSTANCE_ID}
  # EC2インスタンスのOSに依存(Ubuntu: ubuntu, amazon-linux: ec2-user)
  User ubuntu 
  IdentityFile {YOUR_PEM_FILE_PATH}
  # 接続を切れにくくするための設定
  ServerAliveInterval 60
  ServerAliveCountMax 5
  ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

接続確認

  • ssh {YOUR_PREFERRED_NAME}で接続可能
    • {YOUR_PREFERRED_NAME}は自身で設定したconfigを参照すること

うまくいかないときは?

sshのログを以下で吐き出し可能
ssh -vvv {YOUR_PREFERRED_NAME}

また,以下の項目を確認すべし

EC2インスタンス側

  • EC2インスタンスに適切なRoleがついているか?
  • そもそもインターネットにアウトバウンドできるか?

クライアント側

  • awscliがインストールできていて,パスは通っているか?
  • aws configureで正しく設定できているか?
    • そのcredentialに対して,SSMの権限が付与されているか?
  • pemファイルのパスは間違っていないか?
  • instance-idは正しいか?
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1