🐧 Linux 総合学習プラットフォーム
Raspberry Pi セットアップ ・ 中級

SSH と VNC の有効化

ラズパイはモニターやキーボードをつながず、別のPCから遠隔操作するのが一般的です。文字ベースで操作するならSSH、デスクトップ画面を見ながら操作するならVNCを有効にします。どちらも raspi-config の Interface Options から有効化でき、SSHは systemctl でサービスとして起動・自動起動を管理することもできます。SSHを有効にしたら、PCから ssh ユーザー名@ホスト名.local の形で接続できます。

Raspberry Pi は小型で消費電力も小さい。だからこそ、机の隅やセンサーのそばに置きっぱなしにして、必要なときだけ別のPCから操作する使い方が一般的だ。

本体にディスプレイやキーボードをつながず、ネットワーク越しに遠隔操作するこのスタイルが、ヘッドレス運用である。

遠隔操作の手段は大きく2つあり、目的によって使い分ける。文字(コマンド)だけで操作するならSSH、デスクトップ画面そのものを手元に映して操作するならVNCだ。

💡
ポイント文字で軽く操作するならSSH、画面ごと映して操作するならVNC。普段はSSH、画面が要るときだけVNC。

SSHは通信量が小さく軽快で、サーバ用途やコマンド作業に向く。VNCはGUIアプリの操作や画面を見ながらの作業に向く反面、画面を丸ごと転送するぶん重くなる。

普段はSSH、画面が要るときだけVNC、と使い分けるのが実務の感覚だ。

手元のPC操作Raspberry Pi画面なし遠隔で操作SSH = 文字だけ・軽いコマンド作業・サーバ用途に向くVNC = 画面ごと・重いGUI操作・画面を見ながらどちらもRaspberry Pi OSに最初から入っているが、初期は無効

どちらもRaspberry Pi OSに最初から備わっている。だが安全のため初期状態では無効になっており、使う前に有効化が必要になる。

🔓 どこで、どうやって有効化するのか

有効化の入口は raspi-config だ。

sudo raspi-config → 3 Interface Options → Interface Options から SSH / VNC を選び「有効にしますか」に Yes と答える。

sudo raspi-config を実行し、「3 Interface Options」を選ぶと、その中に SSH と VNC がある(先頭のI番号はOSバージョンで変わる)。それぞれを選んで「有効にしますか」に Yes と答えれば有効になる。

デスクトップ環境を使っているなら、メニューの[設定]→[Raspberry Pi の設定]を開き、「インターフェイス」タブでSSHとVNCのスイッチを入れる方法でも同じ結果になる。

設定を変えたら再起動すると確実に反映され、再起動後にRaspberry Pi上でSSHサーバとVNCサーバが動き出す。

有効化の裏側では、SSHがサービスとして動いている。これを利用して、systemctl で細かく管理することもできる。

sudo systemctl start ssh(今すぐ起動)/ sudo systemctl enable ssh(毎回自動起動)/ systemctl status ssh(状態確認)。

今すぐ起動するなら sudo systemctl start ssh。電源を入れるたびに自動で立ち上げるなら sudo systemctl enable ssh。いま動いているかを確認するなら systemctl status ssh だ。

raspi-config での有効化は、内部的にはこのサービスの有効化と起動をまとめて行っているものだと捉えると、仕組みが腑に落ちる。

🔑 SSHで、実際につないでみるとどうなるか

SSHを有効にしたら、手元のPCから接続する。

Windows 10/11・macOS・Linux にはいずれも標準で ssh コマンドが入っている。ターミナルやコマンドプロンプトで ssh ユーザー名@ホスト名.local の形を打つだけで接続できる。

ssh pi@raspberrypi.local ……ユーザー名 pi、ホスト名 raspberrypi の機器へ接続する。名前で引けないときは ssh pi@192.168.1.50。

たとえばユーザー名が pi、ホスト名が raspberrypi なら ssh pi@raspberrypi.local だ。

手元のPCssh で接続① 鍵を信用? → yes② パスワード入力③ ログイン成功Raspberry Pipi@raspberrypi:~ $初回だけ鍵を確認 → パスワード → コマンド操作ができる

末尾の .local は、同じLAN内で名前から機器を見つける仕組み(mDNS)である。IPアドレスを調べなくても名前でたどり着けるのが便利な点だ。名前で引けない環境では、IPアドレスを直接書いて ssh pi@192.168.1.50 のように指定する。

初めて接続するサーバでは「この接続先を信用しますか(鍵のフィンガープリントの確認)」と一度だけ尋ねられるので yes と答える。これで相手の鍵が手元に記録され、次回からは尋ねられない。

これは正常な動作で、改ざんや なりすましを検知するための仕組みだ。続いてパスワードを入力すればログインでき、pi@raspberrypi:~ $ のようなプロンプトが出て、ネットワーク越しにコマンド操作ができるようになる。

🖼 画面ごと手元に映すには、何が要るのか

VNCはデスクトップ画面を転送する方式だ。

Raspberry Pi側でVNCを有効化したら、手元のPCにはVNCクライアント(RealVNC Viewer などの閲覧用アプリ)を入れる。接続先にRaspberry PiのIPアドレスまたはホスト名を指定して接続する。

つまずきVNCの認証には、Raspberry Pi本体のログインユーザーとパスワードを使う。サービス提供元のアカウントと混同しない。

認証では、Raspberry PiのログインユーザーとパスワードをそのままVNCの認証に使う(VNCサービス提供元のアカウントとは別物なので混同しないよう注意する)。

認証が通ると、Raspberry Piのデスクトップがそのままウィンドウに表示され、マウスとキーボードで直接操作できる。

新しいRaspberry Pi OS(Bookworm 以降)では画面表示の土台が Wayland に変わった。その関係で、画面共有の仕組みが従来と異なる場合があり、クライアントによっては接続時に暗号化や認証方式の選択を一手間求められることがある。

基本の流れ(接続先を指定 → 接続 → ユーザー名とパスワードで認証)は変わらない。つながらないときは設定画面で画面共有が有効かを確かめる。

⚠ つながらないとき、まず疑うべきはどこか

接続できないときに多いのは、3つの定番だ。

つまずきつながらない3大原因は、再起動忘れ・名前で引けない(IPで叩く)・ユーザー名が pi でなく書き込み時の別名、だ。

1つ目は、有効化したのに再起動しておらず、サーバが立ち上がっていないこと。2つ目は、ホスト名や.localで名前が引けず、IPで指定すべきところを名前で叩いていること。3つ目は、ユーザー名がデフォルトの pi ではなく、書き込み時に決めた別名になっていること。

ユーザー名は思い込みでなく、書き込み時に自分が設定した値を使う。

SSHがそもそも動いているか怪しいときは、本体側で systemctl status ssh を確認する。active (running) になっているかどうかで一目で切り分けられる。

また、本体のIPアドレスが変わってつながらなくなる事故も定番だ。これは別トピックの hostname -I などでアドレスを確かめれば気づける。

VNCで「ユーザー名・パスワードが違う」と弾かれる場合、サービス提供元のアカウント情報を入れてしまっているケースが多い。入れるべきはRaspberry Pi本体のログイン情報だ。

最後に、現場でいちばん意識したいのは安全面である。

コツ初期パスワードの使い回しは危険。強いパスワードに変えるか、公開鍵認証へ切り替えると安全だ。

SSHを有効にしたまま初期パスワードを使い回すのは危険だ。推測されにくい強いパスワードにするか、より安全な公開鍵認証(手元で作った鍵ペアの公開鍵を本体に登録し、パスワードなしでログインする方式)へ切り替えるのが定石だ。

さらに一歩進めるなら、Visual Studio Code の Remote - SSH 拡張を使うと、手元のエディタからRaspberry Pi上のファイルを直接開いて編集・実行でき、実機での開発が一気に快適になる。

ヘッドレス運用では画面が無いぶん、軽くて安全に固めやすいSSHを主力にし、GUIが必要な作業のときだけVNCを使う。この役割分担にしておくと、つまずきが減って運用が安定する。

この項目に出てくる用語

VNCぶいえぬしー
デスクトップ画面を遠隔で見て操作する仕組み。
ヘッドレス運用へっどれすうんよう
モニターやキーボードをつながず遠隔から使う運用。
raspi-configらずぱいこんふぃぐ
ラズパイの各種初期設定をメニュー形式で行うツール。

関連コマンド

systemctlraspi-config

▶ 学習アプリでこの続きを学ぶ・演習する