当サイトでは、Raspberry Pi 4(ラズパイ4)で最短サーバ構築を目指しています。
コマンド入力と無縁な方にも「原則、コピー&貼り付け」でラズパイサーバを仕上げて、
楽しみを共有頂けると、幸いです。
今回はラズパイリモート操作を可能にするSSH接続の方法についての記事です。
可能な限り、根拠とする公式資料の出典も添えております。
サーバ構築までの道のりは文末にてご確認ください。
SSH接続に関する有益なページ
- DigitalOcean チュートリアル:SSHを使用してリモートサーバーに接続する方法
- Debian リファレンス:リーモートアクセスサーバーとユーティリティー (SSH)
- Debian リファレンス:ホスト名の解決
- Debian リファレンス:SSHのトラブルシュート
前提
- ラズパイ設定でSSH server をactiveにしている。
- ufw(ファイアウォール)でSSHを許可している。
- 家庭内LANの範囲だけでSSH接続する(ufwをIPv4だけ許可する方法はこちら)。
- sudo権限を有する非rootユーザー(例: pi)でラズパイにログインしてください。
ラズパイに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から
長所 | 短所 | 課金 | |
Termius(Free) | ・コピー&貼り付けしやすい ・拡大・縮小しやすい ・複数台を登録できる | ・読みにくい | ・月額840円 ・年額8400円 |
WebSSH(Free) | ・読みやすい | ・コピー&貼り付けしづらい ・拡大・縮小がしづらい ・カーソルを動かしにくい ・ホスト1台のみ登録 | ・一括860円 |
Termius 外観
WebSSH 外観
モバイルデバイスではTypingしづらいので、cpu温度のチェック程度にしか使用していません。
ホスト名を解決する
- 参考資料:Debian リファレンス
Debianの場合
ホスト名解決のための考え方
- リモート操作する側のhostsファイル内で、「サーバ(操作される側)のIPアドレスとHostname」を紐付ける。
- 既存の認証鍵は全て削除。
エラー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接続したりしていましたが、
WikipediaやDebian リファレンスを読むと、
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:~$
大まかにいえば、
- 以前の既知のホストとしての認証キーとマッチしない
- 上のコマンド(黄色マーカー)で新しくキーを作成
- 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はセッションが途切れにくいので、安心してリモート操作出来ます。
当記事がお役に立てれば、嬉しく思います。
以下の記事も一緒にどうぞ。
- ラズパイOS (bullsey) のインストール・セットアップ
- LXTerminal のコマンド一覧(最低限)
- nano の操作方法(保存)
- ラズパイOSセットアップ直後の設定
- ラズパイIPアドレスの固定など
- ufw(ファイアウォール)設定
- SSH接続でラズパイをリモート操作
- Sambaサーバを作ってiCloudを解除
- ローカルWordPress専用Webサーバ構築(SSL対応)
- Raspberry Pi OS Liteのインストール
- Raspberry Pi OS LiteでSambaを設定
- ラズパイサーバのWordPressを自動でバックアップ
- ラズパイSSDブート&起動しないときの対処方法
- MyDNSでドメインを無料取得する
- NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開
脚注
↵1 | 出典:Debian リファレンス |
---|---|
↵2 | 出典:Debian リファレンス |
コメント