【ラズパイ4】SSH接続する&ホスト名解決する方法

この記事は約13分で読めます。

当サイトでは、Raspberry Pi 4(ラズパイ4)で最短サーバ構築を目指しています。
コマンド入力と無縁な方にも「原則、コピー&貼り付け」でラズパイサーバを仕上げて、
楽しみを共有頂けると、幸いです。

今回はラズパイリモート操作を可能にするSSH接続の方法についての記事です。
可能な限り、根拠とする公式資料の出典も添えております。

サーバ構築までの道のりは文末にてご確認ください

SSH接続に関する有益なページ

前提

ラズパイにSSH接続する

  • エラーや警告(Warning)が表示され、SSH接続が出来ない方は後述のホスト名を解決するをご覧ください。

Debianから

1.GNOME-terminal端末)を起動します。

2.以下のように入力します。(例:ユーザー名’pi’, ラズパイのホスト名‘raspberrypi’)

ssh pi@raspberrypi

3.パスワードを尋ねられるので、‘pi’のパスワードを入力し、Enter。
(パスワードのTypingは画面に表示されません)

4.ラズパイにSSH接続が成功すると、以下のように username@hostname が変わります。
ここから先は通常に入力できます。

5.ラズパイとのSSH接続を切断するには、以下のコマンドを入力。

exit

Windows 10から

Windows 10: コマンドプロンプト

Windows のコマンドプロンプトでラズパイにSSH接続する方法は、Debianと同様の手順です。
Windows Powershell, Windows Terminalも同様です。)

Windows 10: Tera Term

1.Tera Termをダウンロード・インストールします。
窓の杜:https://forest.watch.impress.co.jp/library/software/utf8teraterm/

2.ファイル>新しい接続
ホスト欄にラズパイのHostnameを入力し、OK。

3.以下のセキュリティ警告が出れば、続行します。

4.ユーザー名、パスワードを入力。

5.SSH接続が成功すると以下のようになります。

6.ラズパイとのSSH接続を切断するには、以下のコマンドを入力。

exit

iPad, iPhoneから

iOS アプリ(個人的な感想・レビューです)

長所短所課金
Termius(Free)・コピー&貼り付けしやすい
・拡大・縮小しやすい
・複数台を登録できる
・読みにくい・月額840円
・年額8400円
WebSSH(Free)・読みやすい・コピー&貼り付けしづらい
・拡大・縮小がしづらい
・カーソルを動かしにくい
・ホスト1台のみ登録
・一括860円

Termius 外観

WebSSH 外観

モバイルデバイスではTypingしづらいので、cpu温度のチェック程度にしか使用していません。

ホスト名を解決する

Debianの場合

ホスト名解決のための考え方

  1. リモート操作する側のhostsファイル内で、「サーバ(操作される側)のIPアドレスHostname」を紐付ける。
  2. 既存の認証鍵は全て削除。

エラー1:ssh: Colud not resolve hostname raspberrypi: Name or service not known

1.以下のように表示された場合。

「ホストの名前解決ができません。名前またはサービスが不明です。」

ssh: Colud not resolve hostname raspberrypi: Name or service not known

2.Debian(操作する側)のターミナルで以下のように入力し、Enter。

sudo nano /etc/hosts

3.nano 編集画面の文末で、ラズパイのIPアドレスとHostnameを紐付けるために、以下の書式で追記します[1]出典:Debian リファレンス

ラズパイのIPv4アドレス Hostname

4.nano編集を保存します。

5.再度、

ssh pi@raspberrypi

以上でSSH接続できるようになります。
接続後もエラー表示される場合は、ラズパイ側(操作される側)のhostsファイルにも、IPアドレスとHostnameを追記すると、エラー表示が消えました。

ラズパイにSSH接続した状態で、

sudo nano /etc/hosts

nano 編集画面で文末に追記。

nano を保存し、念の為、ラズパイを再起動します。

sudo reboot

再起動後、DebianからSSH接続します。

ssh pi@raspberrypi

私の場合はこれでエラー表示が消えました。

エラー2:Warnning: Permanently added ‘raspberrypi’ (ECDSA) to the list of known hosts.

1.以下のように表示された場合。

「警告:既知のホスト一覧に’raspberrypi’を永続的に追加しました。接続はクローズしました。」

Warnning: Permanently added 'raspberrypi' (ECDSA) to the list of known hosts.
Connection closed by IP address port 22

2.Debianのターミナルに以下のように入力します[2]出典:Debian リファレンス

sudo nano .ssh/known_hosts

3.nano 編集画面で認証鍵をDelete/Backspaceキーで削除します。

▼既存の認証鍵は、全て削除しました。

4.nano を保存します。

5.再度、

ssh pi@raspberrypi

まだ接続できなければ、/etc/hosts に記述してください

以上でSSH接続できるようになると思います。

Windows 10の場合

1.Tera Term で以下のメッセージが表示された場合。

sudo: ホスト raspberrypi の名前解決ができません: 名前またはサービスが不明です。

2.Windowsメニュー>Windowsアクセサリ>メモ帳>右クリック>その他>管理者として実行

3.メモ帳から以下の場所を開きます。

ローカルディスクC>Windows>System32>drivers>etc

「すべてのファイル」を選択して、hosts ファイルを開きます。

4.文末に

ラズパイのIPアドレス Hostname(例:raspberrypi)

を追記してメモ帳を保存します。
Hostnameはここで設定したもの

5.Windows側でHostnameを認識するのか、確認します。
コマンドプロンプトを起動して、ラズパイにpingを飛ばします。

ping ホスト名

「0%の損失」結果が表示されれば、Windowsは既知のHostnameとして認識しています。
Windowsから送信したデータをラズパイは受け取っています。

以上で、Windowsでのホスト名は解決できると思います。

iPad, iPhoneの場合

Termius, WebSSHからSSH接続できない場合は、直接IPアドレスを入力して接続しています。

pi@192.168.x.xxx

1〜2日経過すると、Hostnameで接続できる経験を何度かしています。
上述のDebianやWindowsのように、何か特別なファイル編集をした記憶はありません。
iOSのファイルアプリからSambaサーバへHostnameでアクセスすると、
SSHもHostnameで接続しやすくなる印象があります。

他には、「raspberrypi.local」のように「ホスト名.local」にすると、以下のように表示され、SSH接続が出来ました。

業界の細かなルール・動向をよく知らないので、この方法が良いのか否か分かりませんが、
Wikipedia の雰囲気では「iOS→Linux」への接続で「.local」を使うのは許されている感じに、私は解釈しました。
(間違っていれば、ご指摘ください)

ドメイン.local の使用/不使用について

本記事を書くまでは、「raspberrypi.local」というドメインでSSH接続したりSamba接続したりWordPress接続したりしていましたが、
WikipediaDebian リファレンスを読むと、
Microsoft内部で「.local」の扱い方が固まっていない雰囲気のせいなのか、AppleもLinuxも「.local」使用に対して積極的には感じられませんでした。
そのため、上述の「ホスト名解決」で「.local」が無くても接続できるよう、ファイルを編集しました

▼以前の状態(raspberrypi.local

▼現在の状態(raspberrypi)

この先、WordPressのドメインでも原則的には「.local」を使わない方針で進めていきます。

ドメイン.local に対するAppleの勧告

追記 2022年9月16日

Apple社公表によると、「”.local”を使用しないことを強く勧める」とのことです。
詳しくは以下のリンク先をご覧ください。

エラー:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

追記 2022-09-19

以下のエラーは、過去にSSH接続したことのあるラズパイのHostnameが同じなのに、IPアドレスが変更された場合に表示されます。

私の場合、ラズパイOSを新規作成してIPアドレス固定化直後によく出くわします。

deb@debian:~$ ssh pi@raspberrypi
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:5KbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxDM.
Please contact your system administrator.
Add correct host key in /home/deb/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/deb/.ssh/known_hosts:1
remove with:
ssh-keygen -f "/home/deb/.ssh/known_hosts" -R "raspberrypi"
ECDSA host key for raspberrypi has changed and you have requested strict checking.
Host key verification failed.
deb@debian:~$

大まかにいえば、

  1. 以前の既知のホストとしての認証キーとマッチしない
  2. 上のコマンド(黄色マーカー)で新しくキーを作成
  3. known_hostsファイルに正しいホストキーを追加

Terminal表示の指示通り、コピー・貼り付け(リモート接続したい側で)。

ssh-keygen -f "/home/deb/.ssh/known_hosts" -R "raspberrypi"

▼ known_hostsファイルは更新されました。

# Host raspberrypi found: line 1
/home/deb/.ssh/known_hosts updated.
Original contents retained as /home/deb/.ssh/known_hosts.old

▼ ssh接続をやり直します(リモート接続したい側から)。

ssh pi@raspberrypi

▼ 接続を尋ねられたら手入力で「yes」。「y」ではないのでご注意ください。

The authenticity of host 'raspberrypi (192.168.xx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:5KbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxDM.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'raspberrypi' (ECDSA) to the list of known hosts.
Warning: the ECDSA host key for 'raspberrypi' differs from the key for the IP address '192.168.xx.xxx'
Offending key for IP in /home/deb/.ssh/known_hosts:1
Are you sure you want to continue connecting (yes/no)? yes
pi@raspberrypi's password:

パスワード入力後、username@hostnameが

pi@raspberrypi:~ $

に変更されれば、SSH接続できています。

但し、個人的にはhosts keyを削除するやり方のほうが、安心できます。

今回はラズパイにSSH接続する方法をご紹介しました。
SSHはセッションが途切れにくいので、安心してリモート操作出来ます。

  1. ラズパイOS (bullseye) のインストール・セットアップ
  2. LXTerminal のコマンド一覧(最低限)
  3. nano の操作方法(保存)
  4. ラズパイOSセットアップ直後の設定
  5. ラズパイIPアドレスの固定など
  6. ufw(ファイアウォール)設定
  7. SSH接続でラズパイをリモート操作:この記事
  8. Sambaサーバを構築
  9. ローカルWordPress専用Webサーバ構築(SSL対応)

現在位置を把握頂くと、進みやすくなると思います。
当記事がお役に立てれば、嬉しく思います。

コメント