SSH初心者の壁を乗り越えろ!Raspberry Piに接続できない時の確認手順|UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

SSH初心者の壁を乗り越えろ!Raspberry Piに接続できない時の確認手順|UNIX Cafe
目次

ラズパイユーザーが通る道? SSH「接続できない」沼からの脱出劇

ミナちゃん

ユニ先生、大変です!Raspberry PiにSSHで接続しようとしたら、エラーが出て先に進めません…。

この悲鳴、どこかで聞いたことがあるような気がしませんか?

Raspberry Piを使い始めると、多くの人が一度はぶつかるのが、SSH接続の壁です。

ターミナルから接続しようとしたら、Operation timed out と表示される。あるいは、Permission denied と表示されて、先に進めない。

このようなエラーを見ると、初心者のうちは「何か大きな失敗をしたのでは」と不安になります。

でも、SSHのエラーメッセージは、ただの失敗通知ではありません。どこで止まっているのかを教えてくれる、原因探しの道しるべです。

この記事では、MacからRaspberry PiへSSH接続する場面を例に、接続できない時の確認手順を、準備から順番に整理していきます。

Raspberry Pi公式ドキュメントでも、同じネットワーク上にある別のコンピュータからSSHでRaspberry Piのターミナルへアクセスできると説明されています。ただし、そのためにはRaspberry Pi側でSSHサーバーを有効にしておく必要があります。

参考:Raspberry Pi Documentation – Remote access

今回の前提環境

この記事では、次のような環境を想定します。

接続元:Mac
接続先:Raspberry Pi
Raspberry Pi OS:Lite または Desktop
接続方法:同じ家庭内LANからSSH接続
操作方法:Macのターミナルから ssh コマンドを使う

大切なのは、MacとRaspberry Piが同じ家庭内ネットワークにいることです。

たとえば、Macが自宅のWi-Fiにつながっていて、Raspberry Piも同じWi-Fiにつながっている。または、Macは有線LAN、Raspberry PiはWi-Fiでも、同じルーターの内側にいる。このような状態であれば、SSH接続できる可能性があります。

反対に、MacとRaspberry Piが別々のネットワークにいる場合は、この記事の手順だけでは接続できませんので、まず同じネットワークに接続していることを確認してください。

作業前に準備するもの

SSH接続を試す前に、次のものを確認しておきます。

  • 起動済みのRaspberry Pi
  • Raspberry Piのユーザー名
  • Raspberry Piのパスワード
  • Raspberry PiのIPアドレス
  • Macのターミナル
  • 同じネットワーク環境

ここで特に大切なのは、ユーザー名です。

古い記事や解説では、Raspberry Piのユーザー名として pi がよく出てきます。しかし現在は、Raspberry Pi ImagerなどでOSを書き込む時に、自分でユーザー名やパスワードを設定する流れが一般的です。

Raspberry Pi公式ドキュメントでも、Raspberry Pi Imagerでホスト名、ユーザーアカウント、ネットワーク設定、SSHアクセスなどを事前設定できると説明されています。

参考:Raspberry Pi Documentation – Getting started

そのため、何も考えずに次のように入力しても、接続できないことがあります。

ssh pi@192.168.1.23

自分で設定したユーザー名を使うこと。これが、SSH接続で最初に確認したいポイントです。

まずRaspberry Pi側でSSHを有効にする

SSH接続をするには、Raspberry Pi側でSSHが有効になっている必要があります。

Raspberry Piにモニターとキーボードをつないで操作できる場合は、次のコマンドを実行します。

sudo raspi-config

設定画面が開いたら、次の順番で進みます。

Interface Options
 SSH
 Enable

これで、Raspberry PiがSSH接続を受け付ける状態になります。

もしRaspberry Pi ImagerでOSを書き込む段階なら、あらかじめSSHを有効にしておくこともできます。モニターなしでRaspberry Piを使う場合は、OSを書き込む時点でSSH、ユーザー名、パスワード、Wi-Fi設定を済ませておくと安心です。

接続に使うユーザー名を確認する

Raspberry Piに直接ログインできる場合は、ユーザー名を確認しておきましょう。

Raspberry Piのターミナルで、次のコマンドを入力します。

whoami

たとえば、次のように表示されたとします。

mina

この場合、SSH接続で使うユーザー名は mina です。

つまり、Macから接続する時は、次のような形になります。

ssh mina@192.168.1.23

pi ではなく、自分の環境で表示されたユーザー名を使います。

Raspberry PiのIPアドレスを確認する

次に、Raspberry PiのIPアドレスを確認します。

Raspberry Pi側で、次のコマンドを入力します。

hostname -I

すると、次のような数字が表示されます。

192.168.1.23

この数字が、Raspberry PiのIPアドレスです。

MacからRaspberry PiへSSH接続する時は、このIPアドレスを使います。

ssh ユーザー名@IPアドレス

たとえば、ユーザー名が mina、IPアドレスが 192.168.1.23 なら、次のようになります。

ssh mina@192.168.1.23

この形が、SSH接続の基本です。

Macから通信できるか確認する

いきなりSSH接続を試す前に、MacからRaspberry Piが見えているか確認します。

Macのターミナルで、次のように入力します。

ping 192.168.1.23

IPアドレスの部分は、自分のRaspberry Piで確認したものに置き換えてください。

応答が返ってくる場合は、MacからRaspberry Piまでのネットワーク経路は通っています。

64 bytes from 192.168.1.23: icmp_seq=0 ttl=64 time=5.123 ms
64 bytes from 192.168.1.23: icmp_seq=1 ttl=64 time=4.876 ms

止める時は、control キーを押しながら c を押します。

ここで応答が返ってくるなら、次はSSHの認証を確認する段階です。

反対に、応答が返ってこない場合は、SSH以前の問題です。IPアドレス、Wi-Fi、有線LAN、ルーターの設定などを確認します。

最初の壁:Operation timed out

SSH接続を試した時に、次のようなエラーが出ることがあります。

Operation timed out

また、pingでも次のように表示されることがあります。

ping: sendto: Host is down (100% packet loss)

これは、SSHのユーザー名やパスワード以前に、MacからRaspberry Piへ通信できていない状態です。

つまり、まだログインの段階まで進んでいません。

この場合は、次の点を確認します。

  • Raspberry Piの電源は入っているか
  • Raspberry PiはWi-FiまたはLANに接続されているか
  • MacとRaspberry Piは同じネットワークにいるか
  • IPアドレスは正しいか
  • Raspberry PiのIPアドレスが変わっていないか
  • ルーターの設定で機器同士の通信が遮断されていないか

特に、IPアドレスは変わることがあります。

以前は 192.168.1.23 だったのに、再起動後に 192.168.1.31 になっていることもあります。

そのため、接続できない時は、Raspberry Pi側で改めて確認します。

hostname -I

また、ルーターによっては、同じWi-Fiにいる機器同士の通信を制限する機能があります。「APアイソレーション」「プライバシーセパレーター」などの名前で呼ばれることがあります。

この機能が有効になっていると、MacとRaspberry Piが同じWi-Fiにいても、互いに通信できない場合があります。

Operation timed out が出る時は、まずSSHの設定を疑うのではなく、ネットワークとして相手に届いているかを確認するのが大切です。

次の壁:Permission denied

SSH接続を試した時に、次のような表示が出ることがあります。

Connection closed by 192.168.1.23 port 22
Permission denied, please try again.

この表示が出る場合、少なくともRaspberry PiのSSH接続口である22番ポートまでは届いています。つまり、先ほどの Operation timed out とは違い、ネットワークとして完全に届いていない状態ではありません。

ただし、ログインのための認証で失敗している可能性があります。まずは、ユーザー名とパスワードを確認します。

確認するポイントは、次の通りです。

  • ユーザー名は正しいか
  • パスワードは正しいか
  • 古い情報を見て pi ユーザーで接続していないか
  • キーボード配列の違いで記号を間違えていないか
  • 接続先のユーザーが本当に存在するか

たとえば、Raspberry Piのユーザー名が mina なのに、次のように入力していると接続できません。

ssh pi@192.168.1.23

この場合は、正しいユーザー名に直します。

ssh mina@192.168.1.23

Permission denied は、単なるパスワードミスだけとは限りません。ユーザー名が違うだけでも表示されます。

特に、現在のRaspberry Pi OSでは、OS作成時に自分でユーザー名を設定することが多いため、pi で接続できるとは限りません。

初回接続時の確認メッセージ

初めてRaspberry PiへSSH接続する時、次のようなメッセージが表示されることがあります。

The authenticity of host '192.168.1.23' can't be established.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

これは、初めて接続する相手なので、本当に接続してよいか確認しているメッセージです。

自宅のRaspberry Piに接続していることがわかっている場合は、次のように入力します。

yes

その後、パスワードを入力します。

一度接続すると、Mac側に接続先の情報が記録されるため、通常は毎回この確認が出るわけではありません。

ホスト名で接続する

IPアドレスで接続できるようになったら、次はホスト名での接続を試すことができます。

Raspberry Piのホスト名が raspberrypi の場合、次のように接続できることがあります。

ssh mina@raspberrypi.local

.local を使った接続は、mDNSという仕組みを使います。

ただし、raspberrypi.local は、環境によってうまく使えないことがあります。

そのため、初心者のうちは次の順番がおすすめです。

  • まずIPアドレスで接続できることを確認する
  • その後、ホスト名で接続できるか試す

IPアドレスでは接続できるのに、raspberrypi.local では接続できない場合は、SSHそのものではなく、名前解決の問題です。

その場合は、いったんIPアドレスで接続すれば大丈夫です。

接続できた後の改善:SSHをもっと使いやすくする

~/.ssh/config で接続を短くする

毎回、次のように長いコマンドを入力するのは少し面倒です。

ssh mina@192.168.1.23

そこで、Mac側のSSH設定ファイルを使います。

まず、.ssh ディレクトリを作成します。

mkdir -p ~/.ssh

権限も整えておきます。

chmod 700 ~/.ssh

次に、設定ファイルを開きます。

vi ~/.ssh/config

次のように書きます。

Host raspi
    HostName 192.168.1.23
    User mina

HostName には、Raspberry PiのIPアドレスを書きます。User には、自分のRaspberry Piのユーザー名を書きます。

保存したら、設定ファイルの権限も整えます。

chmod 600 ~/.ssh/config

これで、次回からは短いコマンドで接続できます。

ssh raspi

IPアドレスではなくホスト名で接続できる環境なら、次のように書くこともできます。

Host raspi
    HostName raspberrypi.local
    User mina

ただし、raspberrypi.local が不安定な場合は、まずIPアドレスで設定する方がわかりやすいです。

接続後にロケール警告が出る場合

SSH接続には成功したけれど、ログイン後に次のような警告が出ることがあります。

setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)

これは、Mac側の日本語環境と、Raspberry Pi側のロケール設定が合っていない時に出ることがあります。

Raspberry Piを英語環境のまま使いたい場合でも、日本語ロケールだけを追加しておくと、この警告が出なくなる場合があります。

Raspberry Pi側で、次のコマンドを実行します。

sudo raspi-config

設定画面が開いたら、次のように進みます。

Localisation Options
 Locale

言語リストが表示されたら、次の項目を探します。

ja_JP.UTF-8 UTF-8

スペースキーでチェックを入れ、Enterで進みます。

次に、システムのデフォルトロケールを聞かれます。Raspberry Piの基本表示を英語のままにしたい場合は、元の設定に近いものを選びます。

たとえば、C.UTF-8 または en_GB.UTF-8 を選びます。

これで、多くの場合、ロケールの警告は表示されなくなります。

SSHを使う時の安全上の注意

SSHはとても便利です。MacからRaspberry Piに入り、手元のターミナルだけで操作できます。

ただし、SSHは外からログインできる入口でもあります。

家庭内LANだけで使う場合でも、次の点には注意しておきましょう。

  • 弱いパスワードを使わない
  • 不要な時はSSHを無効にする選択肢もある
  • インターネット側に不用意にSSHを公開しない
  • 慣れてきたらSSH鍵認証も検討する

Raspberry Pi公式ドキュメントでも、SSHではパスワード認証のほか、より安全な方法として鍵認証が案内されています。

参考:Raspberry Pi Documentation – Configuration

家庭内LANで試す段階なら、まずはパスワード認証から始めてもかまいません。ただし、長く使う場合や安全性を高めたい場合は、あとでSSH鍵認証へ進むと安心です。

まとめ:SSHエラーは順番に切り分ける

SSH接続で大切なのは、エラーを一度に解決しようとしないことです。

まず、どこで止まっているのかを分けて考えます。

  • Operation timed out:ネットワークとして届いていない
  • Permission denied:Raspberry Piには届いているが、認証に失敗している
  • setlocale warning:SSH接続後の言語設定の警告

このように分けると、エラーは怖いものではなくなります。

最初に確認するのは、IPアドレスです。

hostname -I

次に、Macから通信できるか確認します。

ping 192.168.1.23

通信できたら、SSHで接続します。

ssh ユーザー名@IPアドレス

接続できるようになったら、~/.ssh/config を使って、短い名前で接続できるようにします。

ssh raspi

SSHは、Raspberry PiをCLI環境で使うための大切な入口です。

最初は少し難しく感じるかもしれません。でも、エラーをひとつずつ読み解いていけば、必ず原因に近づけます。

エラーは、あなたを止める壁ではありません。次に確認する場所を教えてくれる、小さな案内板です。

さらに学びたいあなたへ

用途ごとに選ぶ Linux のおすすめ本

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

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次