SSHでサーバーに接続しようとした際に
ssh: Could not resolve hostname xxx: Name or service not known
というエラーが表示されることがあります。
これは「指定したホスト名が名前解決できない(IPアドレスに変換できない)」ことを意味します。
つまり、SSH自体の問題ではなく ホスト名の設定やDNS解決 に関する問題です。
本記事では、主な原因と確認・解決方法を整理します。
📌 ネットワーク障害を体系的に整理したい方へ
症状別に切り分け手順をまとめた総合トラブルガイドはこちら。
▶ NWトラブルシューティング完全ガイド
主な原因
1. ホスト名のタイプミス
- 入力したホスト名が間違っている
- 全角文字や不要なスペースが混じっている
.comや.localなどドメイン名の抜け
など、単純なタイプミスが意外と多いです。
2. /etc/hosts に設定がない
プライベートネットワークやテスト環境では、ホスト名とIPアドレスの対応を /etc/hosts で管理していることがあります。
そこにエントリがなければ解決できません。
3. DNS解決ができない
外部のDNSサーバーに問い合わせができない場合、名前解決に失敗します。
/etc/resolv.confが未設定- 使用しているDNSサーバーが応答しない
- 社内環境で専用DNSが必要なのに外部DNSを参照している
といったケースが考えられます。
解決方法
1. 入力内容を見直す
まずは単純な入力ミスをチェックします。
ssh user@hostname
の hostname 部分が正しいか、不要なスペースや全角文字がないか確認してください。
2. /etc/hosts を確認・修正する
もし固定のホスト名を使っている場合は /etc/hosts に設定が必要です。
内容を確認するには:
cat /etc/hosts
例:
192.168.1.10 myserver
このように書かれていれば ssh user@myserver で接続できます。
設定がなければ編集します:
sudo vi /etc/hosts

3. DNS解決の確認
以下のコマンドでホスト名が解決できるか確認します。
dig hostname
または
nslookup hostname
解決できない場合は /etc/resolv.conf を確認しましょう。
cat /etc/resolv.conf
例:
nameserver 8.8.8.8
Google Public DNS (8.8.8.8) や Cloudflare DNS (1.1.1.1) を設定するのも有効です。

まとめ
ssh: Could not resolve hostname が出る場合は、以下を順に確認してください。
- ホスト名のスペルミスや入力ミスがないか
/etc/hostsに必要なエントリがあるか- DNSが正しく設定され、問い合わせできているか
特に社内環境やクラウド環境では /etc/hosts とDNSの両方を意識する必要があります。
よくあるエラーと解決方法まとめ

