Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

SSHの「Could not resolve hostname(ホスト名を解決できません)」エラーを素早く解決する方法

SSHでリモート接続を試みた際、「Could not resolve hostname(ホスト名を解決できませんでした)」というエラーが表示されることがあります。このエラーに遭遇した場合は、まずネットワークに正しく接続されているかどうかを確認しましょう。Wi-Fiなどの無線接続を使用している方は、通信が安定して行えるだけの信号強度があるかも併せてチェックしてください。多くの開発者によれば、この種のエラーの最も一般的な原因は接続不良であり、タイプミスよりも頻繁に発生するといわれています。

接続状態に問題がないことが確認できたら、次に入力内容の誤りをチェックします。IPアドレスやリソースロケータの入力間違いがないか見直してみてください。SSHソフトウェアは指定された情報の形式に関してやや厳格ですが、それは常に正しいリソースへ接続させるためです。また、hostsファイルの内容によっては、SSHが意図しない宛先へ接続しようとすることもあります。

方法1:不正な形式のホスト名コマンドを修正する

「s sh」や「ss h」のような単純な入力ミスでない場合、ホスト名を指定するコマンドの書式自体が間違っている可能性があります。SSHのコマンドは「ssh user@NAME」という形式で指定する必要があります。まず、適切な権限でターミナルを開きましょう。通常、sshの実行には一般ユーザー権限で十分であり、スーパーユーザー権限は不要です。

ターミナルを開くには、Ctrl + Alt + Tを同時に押すのが一般的です。Xfce4環境では、Windowsキー(Superキー)を押しながらTキーを押す方法もあります。Dash、アプリケーションメニュー、KDEメニュー、Whiskerメニューの検索欄に「Terminal」と入力して起動したり、システムツールから選択することも可能です。GUIを持たないUbuntu ServerやRed Hat Enterprise Linux、Scientific Linuxでは、Ctrl + Alt + F1〜F6を押して仮想コンソールにアクセスし、ログインしてから作業を進めてください。

プロンプトが表示されたら、sshコマンドを前述の正しい形式で入力します。例えば、ネットワーク上に「myPlace」というホスト名のマシンが存在するなら「ssh root@myPlace」とします。IPアドレスに直接接続する場合は、「#」部分を実際の数字に置き換えた「ssh root@##.#.#.##」のような形式が有効です。

もし「root@server」のように記述していた場合、以下のようなエラーが出力されます:

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

「ssh user@サーバー名」の形式で常に記述すると覚えておくと、この種のミスを防げます。

方法2:hostsファイルを修正する

hostsファイルが破損している場合も、ホスト名解決の問題が発生することがあり、SSHは他のエラーと同じ警告を表示することがあります。hostsファイルを編集するにはroot権限が必要です。上記の手順で開いたターミナルで作業している場合は、「sudo nano /etc/hosts」と入力してファイルを編集モードで開きます。sudoコマンド実行時にはパスワードの入力を求められます。

デスクトップ環境で作業している場合は、アプリケーション起動用のコマンドラインを使いましょう。使用しているデスクトップ環境に応じて、Windowsキー(Superキー)+ R、Alt + F2、またはDashをクリックして起動できます。その後、GTK+ベースかKDE Qtベースかに応じて適切なエディタを指定してください。geditやkateの代わりにgvim、leafpad、mousepadなどを使っても構いません。

いずれの場合もhostsファイルが読み込まれます。読み書き権限があることを確認したら、ファイルの先頭部分を見てください。正しく動作させるには、少なくとも以下の2行が必要です:

127.0.0.1    localhost

127.0.1.1    YourHostName

YourHostNameの部分には、お使いのマシンの実際のホスト名を記入します。IPv6ネットワークを利用している場合は、さらに以下の行も必要になることがあります:

::1    ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

IPv4のみを使用するネットワーク環境であれば、ほとんどの場合、最初の2行が正しく設定されていれば問題ありません。ただし、現代のインターネット接続は急速にIPv6標準へ移行しつつあるため、IPv4の設定だけで済ませられる時代は終わりつつあります。通常、Linuxディストリビューションはこれらの設定を自動的に行ってくれますが、パッケージの不具合やユーザーの操作ミスによってhostsファイルが破損し、接続が誤った場所へ向いてしまうこともあります。

グラフィカルテキストエディタのタイトルバーに「hosts」と表示されており、保存できない場合は、gksuやkdesuを正しく使えていない可能性があります。また、「ff02::2 ip6-allrouters」以降に他の行が存在しても、それらが本記事で扱う設定に関係していなければ触る必要はありません。これらは他の設定の一部であり、hostsファイルを使って特定サイトへのアクセスをブロックしているシステムでは、かなりの数の行が存在することもあります。ただし、重複した行はコメントアウトする必要があります。行頭に「#」記号を追加すればコメントアウトできます。前述の各行はそれぞれ1回だけ出現すべきであり、同じ名前に複数の割り当てが存在してはいけません。重複があると、SSHやその他のネットワークプログラムは最後の割り当てを採用してしまい、それが誤った設定である可能性があります。

編集が完了したらファイルを保存し、すぐに閉じてください。hostsファイルへの不要な変更は避けるべきなので、ここで確実に終了することが重要です。作業後にもう一度sshコマンドを実行し、方法1で説明した手順に従ってコマンドが正しく形成されていることを確認しましょう。それでも問題が解決しない場合は、マシンの再起動を試みてください。再起動後は、SSHに関する問題は解消されているはずです。

著者について

SSHの「Could not resolve hostname(ホスト名を解決できません)」エラーを素早く解決する方法

Kevin Arrows(ケビン・アローズ)

Kevin Arrowsは、10年以上の業界経験を持つテクノロジースペシャリストです。Microsoft Certified Technology Specialist(MCTS)認定資格を保有しており、最新の技術動向を追いかけることに深い情熱を持っています。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど、幅広い技術関連トピックについて執筆しており、複雑な技術的概念を明快かつ簡潔に説明する能力で高い評価を得ています。その貢献は業界内で広く認められ、尊敬を集めています。

  1. Ubuntuで破損したメモリカードを復旧する方法|ステップバイステップ完全ガイド

    メモリカードは、スマートフォンなどのモバイルデバイス、デジタルカメラ、PCの間でデータをやり取りするための非常に便利な媒体です。Google AndroidやApple iOSの端末で「メモリカードが破損しています。フォーマットしてください」といったエラーが表示されても、フォーマットを拒否していれば、データを復旧できる可能性はまだ残っています。まずはカードを正しく取り外し(イジェクト)、物理的な状態を確認しましょう。フルサイズのSDカード・SDHCカード・SDXCカードの中には、ケース内で緩んで接触不良を起こしているものがあります。この場合は、優しく押し戻すことで改善することがあります。mic

  2. Linuxで不良ブロック(バッドセクタ)を修復する方法:実証済みのテクニック

    Linuxで不良ブロックを修復する方法 LinuxとMicrosoft Windowsをデュアルブートしているユーザーは、どちらかのOSにより多くの空き容量を確保するために、パーティションの縮小や拡張を行うことがあります。その際、LinuxのGPartedやWindowsのchkdskから「不良セクタ(bad sector)」に関する警告が表示されることがあります。Linuxのみを利用しているユーザーでも、同様の警告を目にすることがあるでしょう。 実は、ユーザーが受け取る通知には、同じように見えて2種類の異なる不良セクタが存在します。1つは、ディスクプラッタの物理的な損傷やNANDメモリセルの