SSH と VNC の有効化
ラズパイはモニターやキーボードをつながず、別のPCから遠隔操作するのが一般的です。文字ベースで操作するならSSH、デスクトップ画面を見ながら操作するならVNCを有効にします。どちらも raspi-config の Interface Options から有効化でき、SSHは systemctl でサービスとして起動・自動起動を管理することもできます。SSHを有効にしたら、PCから ssh ユーザー名@ホスト名.local の形で接続できます。
Raspberry Pi は小型で消費電力も小さいため、机の隅やセンサーのそばに置きっぱなしにして、必要なときだけ別のPCから操作する使い方が一般的です。本体にディスプレイやキーボードをつながず、ネットワーク越しに遠隔操作するこのスタイルがヘッドレス運用です。遠隔操作の手段は大きく2つあり、目的によって使い分けます。文字(コマンド)だけで操作するならSSH、デスクトップ画面そのものを手元に映して操作するならVNCです。SSHは通信量が小さく軽快で、サーバ用途やコマンド作業に向きます。VNCはGUIアプリの操作や画面を見ながらの作業に向く反面、画面を丸ごと転送するぶん重くなります。普段はSSH、画面が要るときだけVNC、と使い分けるのが実務の感覚です。どちらもRaspberry Pi OSに最初から備わっていますが、安全のため初期状態では無効になっており、使う前に有効化が必要です。
有効化する2つの方法
有効化の入口は raspi-config です。sudo raspi-config を実行し、「3 Interface Options」を選ぶと、その中に I1 SSH と I3 VNC があります。それぞれを選んで「有効にしますか」に Yes と答えれば有効になります。デスクトップ環境を使っているなら、メニューの[設定]→[Raspberry Pi の設定]を開き、「インターフェイス」タブでSSHとVNCのスイッチを入れる方法でも同じ結果になります。設定を変えたら再起動すると確実に反映され、再起動後にRaspberry Pi上でSSHサーバとVNCサーバが動き出します。SSHについては、これがサービスとして動いていることを利用して、systemctl で細かく管理することもできます。今すぐ起動するなら sudo systemctl start ssh、電源を入れるたびに自動で立ち上げるなら sudo systemctl enable ssh、いま動いているかを確認するなら systemctl status ssh です。raspi-config での有効化は、内部的にはこのサービスの有効化と起動をまとめて行っているものだと捉えると、仕組みが腑に落ちます。
SSHで接続する
SSHを有効にしたら、手元のPCから接続します。Windows 10/11・macOS・Linux にはいずれも標準で ssh コマンドが入っているので、ターミナルやコマンドプロンプトで ssh ユーザー名@ホスト名.local の形を打つだけで接続できます。たとえばユーザー名が pi、ホスト名が raspberrypi なら ssh pi@raspberrypi.local です。末尾の .local は同じLAN内で名前から機器を見つける仕組み(mDNS)で、IPアドレスを調べなくても名前でたどり着けるのが便利な点です。名前で引けない環境では、IPアドレスを直接書いて ssh pi@192.168.1.50 のように指定します。初めて接続するサーバでは「この接続先を信用しますか(鍵のフィンガープリントの確認)」と一度だけ尋ねられるので yes と答えます。これで相手の鍵が手元に記録され、次回からは尋ねられません。これは正常な動作で、改ざんや なりすましを検知するための仕組みです。続いてパスワードを入力すればログインでき、pi@raspberrypi:~ $ のようなプロンプトが出て、ネットワーク越しにコマンド操作ができるようになります。
VNCで接続する
VNCはデスクトップ画面を転送する方式です。Raspberry Pi側でVNCを有効化したら、手元のPCにはVNCクライアント(RealVNC Viewer などの閲覧用アプリ)を入れ、接続先にRaspberry PiのIPアドレスまたはホスト名を指定して接続します。認証では、Raspberry PiのログインユーザーとパスワードをそのままVNCの認証に使います(VNCサービス提供元のアカウントとは別物なので混同しないよう注意します)。認証が通ると、Raspberry Piのデスクトップがそのままウィンドウに表示され、マウスとキーボードで直接操作できます。新しいRaspberry Pi OS(Bookworm 以降)では画面表示の土台が Wayland に変わった関係で、画面共有の仕組みが従来と異なる場合があり、クライアントによっては接続時に暗号化や認証方式の選択を一手間求められることがあります。基本の流れ(接続先を指定 → 接続 → ユーザー名とパスワードで認証)は変わらないので、つながらないときは設定画面で画面共有が有効かを確かめます。
よくある失敗と実務の勘どころ
接続できないときに多いのは、有効化したのに再起動しておらずサーバが立ち上がっていない、ホスト名や.localで名前が引けずIPで指定すべきところを名前で叩いている、ユーザー名がデフォルトの pi ではなく書き込み時に決めた別名になっている、の3つです。ユーザー名は思い込みでなく、書き込み時に自分が設定した値を使います。SSHがそもそも動いているか怪しいときは、本体側で systemctl status ssh を確認すると、active (running) になっているかどうかで一目で切り分けられます。また、本体のIPアドレスが変わってつながらなくなる事故も定番で、これは別トピックの hostname -I などでアドレスを確かめれば気づけます。VNCで「ユーザー名・パスワードが違う」と弾かれる場合、サービス提供元のアカウント情報を入れてしまっているケースが多く、入れるべきはRaspberry Pi本体のログイン情報です。
実務でとくに意識したいのが安全面です。SSHを有効にしたまま初期パスワードを使い回すのは危険で、推測されにくい強いパスワードにするか、より安全な公開鍵認証(手元で作った鍵ペアの公開鍵を本体に登録し、パスワードなしでログインする方式)へ切り替えるのが定石です。さらに一歩進めるなら、Visual Studio Code の Remote - SSH 拡張を使うと、手元のエディタからRaspberry Pi上のファイルを直接開いて編集・実行でき、実機での開発が一気に快適になります。ヘッドレス運用では画面が無いぶん、軽くて安全に固めやすいSSHを主力にし、GUIが必要な作業のときだけVNCを使う、という役割分担にしておくと、つまずきが減って運用が安定します。