(2023.06)レンタルサーバ変更に伴い、ドメイン変更致しました(旧URL:https://i-topics.net)。

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

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

新着記事


    - この記事には広告・プロモーションが含まれています -  

当サイトでは、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 (bullsey) のインストール・セットアップ
  2. LXTerminal のコマンド一覧(最低限)
  3. nano の操作方法(保存)
  4. ラズパイOSセットアップ直後の設定
  5. ラズパイIPアドレスの固定など
  6. ufw(ファイアウォール)設定
  7. SSH接続でラズパイをリモート操作
  8. Sambaサーバを作ってiCloudを解除
  9. ローカルWordPress専用Webサーバ構築(SSL対応)
  10. Raspberry Pi OS Liteのインストール
  11. Raspberry Pi OS LiteでSambaを設定
  12. ラズパイサーバのWordPressを自動でバックアップ
  13. ラズパイSSDブート&起動しないときの対処方法
  14. MyDNSでドメインを無料取得する
  15. NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開

コメント