ssh: Could not resolve hostname の原因と解決方法

  • URLをコピーしました!

SSHでサーバーに接続しようとした際に

ssh: Could not resolve hostname xxx: Name or service not known

というエラーが表示されることがあります。
これは「指定したホスト名が名前解決できない(IPアドレスに変換できない)」ことを意味します。

つまり、SSH自体の問題ではなく ホスト名の設定やDNS解決 に関する問題です。

本記事では、主な原因と確認・解決方法を整理します。

目次

主な原因

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 が出る場合は、以下を順に確認してください。

  1. ホスト名のスペルミスや入力ミスがないか
  2. /etc/hosts に必要なエントリがあるか
  3. DNSが正しく設定され、問い合わせできているか

特に社内環境やクラウド環境では /etc/hosts とDNSの両方を意識する必要があります。

よくあるエラーと解決方法まとめ
目次