MENU
category

SSM Agent unable to acquire credentialsの原因と対処法|i/o timeoutの切り分け

EC2インスタンスをSystems Managerのマネージドノードとして登録しようとした際、SSM Agentログに次のようなエラーが出ることがあります。

SSM Agent unable to acquire credentials:
no valid credentials could be retrieved for ec2 identity.
Default Host Management Err:
ec2 instance not yet registered with Systems Manager

さらに、次のようなタイムアウトが併記される場合があります。

Post "https://ssm.ap-northeast-1.amazonaws.com/":
dial tcp 10.0.10.25:443: i/o timeout

このエラーはIAM権限だけでなく、VPCエンドポイントまでの通信経路やセキュリティグループが原因でも発生します。本記事では、エラーメッセージから障害箇所を読み取り、名前解決、TCP/443、IAM、SSM Agentの順に切り分ける方法を整理します。

対象はEC2上のSSM Agentです。IPアドレス・リソースIDは例示用で、CLIの複数行例はBash用です。

目次

先に結論

dial tcp 10.0.10.25:443: i/o timeout と表示されている場合、DNSによる名前解決は成功しています。ホスト名 ssm.ap-northeast-1.amazonaws.com10.0.10.25 に変換された後、TCP/443の接続で応答を得られずタイムアウトしています。

ただし、名前解決が完了したことと、正しいIPが返っていることは別です。返されたIPを想定のEndpoint ENIと照合してから通信経路を調べます。主に次の箇所を確認します。

  • Interface VPC Endpointのセキュリティグループで、EC2からのTCP/443を許可しているか
  • EC2側セキュリティグループのアウトバウンドでTCP/443を許可しているか
  • ネットワークACLで往復通信を許可しているか
  • VPCエンドポイントが利用可能な状態か
  • 経路上のFirewallやTransit Gatewayで通信が遮断されていないか

エラーメッセージの読み方

名前解決に失敗している場合

DNSで名前解決できない場合は、一般的に次のような形式になります。

dial tcp: lookup ssm.ap-northeast-1.amazonaws.com
on 10.0.0.2:53: no such host

この場合はRoute 53 Resolver、Private Hosted Zone、VPCのDNS設定、オンプレミスDNSからの転送設定などを確認します。

名前解決後の接続に失敗している場合

dial tcp 10.0.10.25:443: i/o timeout

IPアドレスが表示されているため、名前解決処理は完了しています。接続先IPに対するTCP/443の通信が成立していない状態です。

IAMまたは認証情報に問題がある場合

no valid credentials could be retrieved for ec2 identity

このメッセージだけでIAMロールの不足と断定しないことが重要です。SSM Agentは取得した認証情報を使ってSystems Managerへ情報を送信する必要があるため、SSMエンドポイントへ到達できない場合にも認証情報の取得・報告に関連するエラーとして表示されることがあります。

切り分け手順

1. 名前解決結果を確認する

Linuxでは次のコマンドで確認できます。

getent hosts ssm.ap-northeast-1.amazonaws.com

nslookup ssm.ap-northeast-1.amazonaws.com

Interface VPC Endpointを利用している構成では、VPCエンドポイントのENIに割り当てられたプライベートIPが返ることを確認します。

なお、共有されたPrivate Hosted Zoneを利用している構成では、エンドポイントを所有するVPCとは別のVPCにあるプライベートIPが返ることもあります。その場合は、返されたIPまでのルーティングとセキュリティ制御も必要です。

2. TCP/443の到達性を確認する

curl -v --connect-timeout 5 https://ssm.ap-northeast-1.amazonaws.com/

nc -vz -w 5 ssm.ap-northeast-1.amazonaws.com 443

curlでTLSハンドシェイクまで進めば、少なくともDNSとTCP/443の到達性は確認できます。HTTP 400や403が返っても、署名なしリクエストに対するAWSサービスの応答であれば、ネットワーク疎通自体は成功しています。

一方、i/o timeoutになる場合は、VPCエンドポイントのセキュリティグループ、EC2側のアウトバウンド、ネットワークACL、ルート、経路上のFirewallを確認します。

3. VPCエンドポイントの状態を確認する

aws ec2 describe-vpc-endpoints \
  --vpc-endpoint-ids vpce-xxxxxxxxxxxxxxxxx \
  --region ap-northeast-1 \
  --query 'VpcEndpoints[0].{State:State,ServiceName:ServiceName,PrivateDnsEnabled:PrivateDnsEnabled,SubnetIds:SubnetIds,Groups:Groups,DnsEntries:DnsEntries}' \
  --output json

少なくとも次の点を確認します。

  • Stateavailable
  • ServiceName が対象リージョンのSSMサービス
  • 必要なサブネットにエンドポイントENIが作成されている
  • 想定したセキュリティグループが関連付けられている
  • Private DNSまたはPrivate Hosted Zoneが意図した構成になっている

4. VPCエンドポイント側のセキュリティグループを確認する

Interface VPC Endpointのセキュリティグループでは、接続元EC2または接続元CIDRからのインバウンドTCP/443を許可します。

よくある見落としは、EC2側のセキュリティグループだけを確認し、エンドポイントENI側のインバウンドルールを変更していないケースです。DNSが正しくても、エンドポイント側で拒否されればTCP接続は成立しません。

5. Systems Managerで必要なエンドポイントを確認する

閉域構成でSession Managerを使用する場合、基本となるのは次のエンドポイントです。

  • ssm.ap-northeast-1.amazonaws.com
  • ssmmessages.ap-northeast-1.amazonaws.com

SSM Agent 3.3.40.0以降は利用可能な場合にssmmessagesを優先します。ec2messagesは2024年より前に開始したリージョンの旧構成を確認する際の候補で、すべての構成に必須の3つ目のEndpointではありません。2024年以降に開始したリージョンではec2messagesはサポートされません。

さらに、Session Managerの設定内容に応じて次の接続先が必要です。

  • SSM Agent更新、S3上のスクリプト取得、S3へのログ保存など:S3と必要なバケットへの権限
  • CloudWatch Logsへ送信する場合:CloudWatch Logs
  • KMSで暗号化する場合:AWS KMS

6. IAMインスタンスプロファイルを確認する

インスタンスプロファイル方式を利用する場合、EC2にIAMロールが関連付けられ、そのロールに通常はAmazonSSMManagedInstanceCore相当の権限が必要です。

aws ec2 describe-instances \
  --instance-ids i-xxxxxxxxxxxxxxxxx \
  --region ap-northeast-1 \
  --query 'Reservations[0].Instances[0].IamInstanceProfile' \
  --output json

ロールを後から関連付けた場合や権限を変更した場合、認証情報の更新を早めるためにSSM Agentの再起動が有効な場合があります。

再起動は実行中のSSM処理への影響を確認してから行います。以下はsystemdサービスとしてインストールしたLinuxの例です。

sudo systemctl restart amazon-ssm-agent
sudo systemctl status amazon-ssm-agent

7. Default Host Management Configurationを確認する

Default Host Management Configurationを利用している場合、設定はアカウントおよびリージョン単位です。また、EC2のインスタンスプロファイルにssm:UpdateInstanceInformationを許可する権限があると、SSM AgentはDefault Host Management Configurationよりインスタンスプロファイルを優先します。

エラーにDefault Host Management Errが含まれる場合は、次を確認します。

  • 対象リージョンでDefault Host Management Configurationが有効か
  • 設定したデフォルトIAMロールの権限と信頼ポリシー
  • インスタンスプロファイルとの優先関係
  • SSM Agent 3.2.582.0以降でIMDSv2を使用できる状態か
  • 登録情報を保存するSSM Agentのローカルディレクトリが削除されていないか

8. SSM Agentの診断機能とログを確認する

対応バージョンでは、次のコマンドで診断を実行できます。

ssm-cli get-diagnostics --output table

Linuxの主なログは次の場所にあります。

/var/log/amazon/ssm/amazon-ssm-agent.log
/var/log/amazon/ssm/errors.log

直近のログは次のように確認できます。

sudo journalctl -u amazon-ssm-agent --since "30 minutes ago"
sudo tail -n 200 /var/log/amazon/ssm/amazon-ssm-agent.log

今回のエラーから分かること

Post "https://ssm.ap-northeast-1.amazonaws.com/":
dial tcp 10.0.10.25:443: i/o timeout

このログからは、次の順序で処理が進んでいます。

  1. SSM Agentがssm.ap-northeast-1.amazonaws.comへ接続しようとした
  2. DNSによって10.0.10.25へ名前解決された
  3. 解決されたIPのTCP/443へ接続を試みた
  4. 応答を得られずタイムアウトした

したがって、優先して調べる場所は、10.0.10.25を持つVPCエンドポイントENIと、そのセキュリティグループです。DNS設定を追加する前に、既に返っているIPがどのENIなのかを特定します。

aws ec2 describe-network-interfaces \
  --region ap-northeast-1 \
  --filters Name=addresses.private-ip-address,Values=10.0.10.25 \
  --query 'NetworkInterfaces[].{NetworkInterfaceId:NetworkInterfaceId,Description:Description,VpcId:VpcId,SubnetId:SubnetId,Groups:Groups,PrivateIpAddress:PrivateIpAddress}' \
  --output table

ENIを特定できたら、関連付けられたセキュリティグループで、接続元からのTCP/443が許可されているかを確認します。

復旧の判定

マネージドノードがOnlineになり、新しいAgentログで同じエラーが再発しないことを確認します。Session Managerを使う場合は実際のセッション開始まで試験してください。TCP接続の成功だけではIAMやEndpointポリシーの認可は確認できません。

まとめ

  • エラーに接続先IPが表示されていれば、名前解決は成功している
  • i/o timeoutでは、最初にTCP/443の経路とVPCエンドポイント側SGを確認する
  • unable to acquire credentialsだけでIAM原因と断定しない
  • 閉域環境ではssmssmmessages、必要に応じてec2messagesを確認する
  • S3ログ、CloudWatch Logs、KMSを使う場合は、それぞれの接続先も必要
  • IAM、Default Host Management Configuration、SSM Agentの状態はネットワーク疎通確認後に切り分ける

参考資料

次に読む記事

DNSゾーンを関連付ける段階で止まる場合はConflictingDomainExistsの原因と確認方法へ。調査結果をまとめる際はAWS閉域ネットワークの調査テンプレートを利用できます。

仕様確認日:2026年9月14日。実際のAWS環境での接続試験は別途必要です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次