Ubuntu ServerへSSHで安全に接続する方法|家庭内LANで鍵認証まで設定

家庭内LANのノートPCからルーター経由でUbuntu ServerへSSH接続するイメージ はじめての自宅サーバー

Ubuntu Serverを別のPCから操作できるようにすると、サーバーへ毎回モニターとキーボードをつなぐ必要がなくなります。そのために使う標準的な仕組みがSSHです。

この記事では、Ubuntu Server 26.04 LTSへ家庭内LANのWindows・macOS・Linux PCから接続し、ED25519鍵認証へ安全に切り替えます。パスワード認証を止める前に別セッションで鍵ログインを確認し、設定ミスで締め出されにくい順番で進めます。

作業中はUbuntu Serverのローカル画面と、接続済みのSSHセッションを閉じないでください。

新しい接続で鍵認証が成功するまで、既存の接続を復旧経路として残します。コマンド中の USERSERVER_IP は自分の値へ置き換えてください。

まだUbuntu Serverを用意していない場合は、先に余ったPCで自宅サーバーを作る方法を進めてください。

この記事で行うこと・行わないこと

家庭内LANの別PCからUbuntu ServerへSSH接続する構成図
この記事では家庭内LAN側からのSSH接続だけを設定し、ルーターのポート開放やDMZ設定は行いません。

今回のゴール

  • Ubuntu ServerへOpenSSH Serverを導入する
  • 初回接続時にサーバーのホスト鍵を照合する
  • 接続元PCでED25519鍵を作り、公開鍵だけをサーバーへ登録する
  • 新しいセッションで鍵認証を確認してからパスワード認証を無効にする
  • 設定検証・反映・復旧方法まで確認する

今回は行わないこと

  • ルーターのポート開放、DMZ、UPnPの設定
  • インターネット側からのSSH接続
  • 固定IP、DDNS、VPN、SSHポート番号の変更
  • fail2ban、MFA、FIDOキーなどの追加対策

この記事ではルーター側の外部公開設定を追加せず、家庭内LAN側での接続だけを扱います。ただし「ポート開放をしていないから必ず外部公開されていない」とは断定できません。既存のルーター設定やIPv6の公開条件は環境ごとに確認してください。

1. Ubuntu ServerのIPアドレスを確認する

Ubuntu Serverのローカル画面でログインし、次を実行します。

hostname -I

表示された家庭内LAN用のIPv4アドレスを控えます。以降は例として 192.168.1.50 を使いますが、実際には自分のサーバーの値を SERVER_IP として使ってください。複数表示された場合は、有線LANなど今回使うインターフェースのアドレスを選びます。

2. OpenSSH Serverをインストールする

sudo apt update
sudo apt install openssh-server

インストール後、サービスの状態と22番ポートの待ち受けを確認します。

systemctl status ssh.service --no-pager
sudo ss -ltnp | grep ':22'

ssh.serviceactive (running) で、22番ポートが表示されれば次へ進みます。表示されない場合は、ここで止めてインストール時のエラーとサービスログを確認してください。

3. 初回接続前にサーバーのホスト鍵を控える

SSHのホスト鍵は「今つないでいる相手が目的のサーバーか」を確認するための鍵です。後で作るユーザー用のログイン鍵とは役割が違います。Ubuntu Server側でED25519ホスト鍵のフィンガープリントを表示します。

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

SHA256: から始まる値を、手元で見比べられるように控えます。

4. 別PCから初回SSH接続する

Windows PowerShell、macOSのターミナル、Linuxのターミナルのいずれでも、基本コマンドは同じです。

ssh USER@SERVER_IP

たとえばユーザー名が labuser、IPアドレスが 192.168.1.50 なら次のようになります。

ssh labuser@192.168.1.50

初回は接続先のフィンガープリントが表示されます。先ほどサーバーのローカル画面で控えた値と一致することを確認してから yes と入力します。一致しない場合は承認せず、IPアドレスや接続先を見直してください。

続けてUbuntuのログインパスワードを入力します。入力中は画面に文字や記号が出ませんが正常です。

5. 接続元PCでSSH鍵を作る

秘密鍵をPCに残し公開鍵だけをUbuntu Serverへ登録するSSH鍵認証の仕組み
秘密鍵は接続元PCから出しません。Ubuntu Serverへ登録するのは公開鍵だけです。

SSHのパスワード認証も通信自体は暗号化されます。一方、鍵認証へ切り替えると、推測や使い回しの影響を受けるログインパスワードへの依存を減らせます。

接続元PCで次を実行します。すでに id_ed25519 があると上書き確認が出るため、上書きせず既存鍵を使うか、別名を指定してください。

ssh-keygen -t ed25519 -C "home-server"

保存先は、初めてなら既定値のままで構いません。秘密鍵をPCごと持ち去られた場合に備え、鍵のパスフレーズは空にしないことをおすすめします。これはUbuntuのログインパスワードとは別のものです。

id_ed25519 は秘密鍵です。サーバーへコピーしたり、メールやチャットで送ったりしないでください。

末尾が .pubid_ed25519.pub は公開鍵です。Ubuntu Serverへ登録するのはこちらだけです。

6. 公開鍵をUbuntu Serverへ登録する

Linuxから登録する場合

ssh-copy-id -i ~/.ssh/id_ed25519.pub USER@SERVER_IP

macOSから登録する場合

cat ~/.ssh/id_ed25519.pub | ssh USER@SERVER_IP 'umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys'

Windows PowerShellから登録する場合

Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh USER@SERVER_IP 'umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys'

登録時には、まだUbuntuのログインパスワードを使います。登録後、Ubuntu Server側で念のため権限を整えます。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

7. 新しいセッションで鍵認証を強制して試す

SSH接続を失わないために既存セッションを残して鍵認証を確認する設定手順
既存セッションを残し、別ウィンドウで鍵認証を確認してからパスワード認証を無効にします。

今つながっているSSHセッションは残したまま、別のPowerShellまたはターミナルを開きます。次のコマンドはパスワード認証とキーボード対話認証を使わず、指定した鍵だけで接続を試します。

macOS・Linux

ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes -o PasswordAuthentication=no -o KbdInteractiveAuthentication=no USER@SERVER_IP

Windows PowerShell

ssh -i "$env:USERPROFILE\.ssh\id_ed25519" -o IdentitiesOnly=yes -o PasswordAuthentication=no -o KbdInteractiveAuthentication=no USER@SERVER_IP

鍵のパスフレーズだけを求められ、Ubuntuへログインできれば成功です。Ubuntuのログインパスワードを求められる、または接続できない場合は、次の設定変更へ進まず、公開鍵の内容・ユーザー名・ファイル権限を見直します。

8. パスワード認証を無効にする

鍵認証に成功したことを確認できたら、接続中のSSHセッションで設定ファイルを作ります。UbuntuのOpenSSHは設定を上から読み、同じ項目では最初に得た値を使うため、後ろになりやすい 99- ではなく 10- から始めます。

sudoedit /etc/ssh/sshd_config.d/10-ouchi-lab-key-only.conf

エディターが開いたら、次の4行を保存します。

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

UsePAM no は追加しません。また、通常作成した一般ユーザーで接続し、管理操作が必要なときだけ sudo を使います。

9. 構文と有効値を確認してから反映する

まず構文を検証します。正常なら何も表示されません。

sudo sshd -t

エラーが出た場合はreloadせず、表示された行を修正してから再実行してください。続けて、実際に有効になる値を確認します。

sudo sshd -T | grep -E '^(pubkeyauthentication|passwordauthentication|kbdinteractiveauthentication|permitrootlogin) '

次の組み合わせになっていることを確認します。

pubkeyauthentication yes
passwordauthentication no
kbdinteractiveauthentication no
permitrootlogin no

異なる場合は、どの設定ファイルで値が指定されているか調べます。

sudo grep -RinE '^[[:space:]]*(PubkeyAuthentication|PasswordAuthentication|KbdInteractiveAuthentication|PermitRootLogin)\b' /etc/ssh/sshd_config /etc/ssh/sshd_config.d

検証に通ったら、接続中のセッションを残したまま設定を再読み込みします。

sudo systemctl reload ssh.service

10. もう一度、新しいセッションで確認する

別ウィンドウをもう一つ開き、通常の接続を試します。

ssh USER@SERVER_IP

鍵でログインできれば設定完了です。任意で、公開鍵を使わない接続が拒否されることも確認できます。

ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password USER@SERVER_IP

Permission denied (publickey) のように拒否されれば、パスワード認証が無効になっています。確認できるまでは既存セッションとローカル画面を閉じないでください。

接続できなくなったときの戻し方

ローカル画面、または残しておいた既存SSHセッションから、追加した設定ファイルを無効化します。

sudo mv /etc/ssh/sshd_config.d/10-ouchi-lab-key-only.conf /etc/ssh/sshd_config.d/10-ouchi-lab-key-only.conf.disabled
sudo sshd -t
sudo systemctl reload ssh.service

その後、新しいセッションで接続を確認します。既存セッションまで先に閉じてしまった場合は、Ubuntu Serverへモニターとキーボードをつなぎ、ローカルログインして同じ操作を行います。

UFWを使っている場合の確認

sudo ufw status

Status: inactive なら、この記事のためだけにUFWを新規有効化しません。既に active なら無効化もせず、現在のSSH許可ルールと家庭内LANのサブネットを確認してから別途調整してください。確認せずにルールを削除・変更すると、SSH接続を失うことがあります。

よくある誤解と安全のポイント

  • SSHのパスワード認証も通信経路は暗号化される。鍵認証の利点は、推測・使い回し可能なログインパスワードへの依存を減らせること
  • 秘密鍵は接続元PCに残し、Ubuntu Serverへ渡すのは公開鍵だけ
  • 鍵のパスフレーズとUbuntuのログインパスワードは別物
  • サーバーのホスト鍵と、ユーザーがログインに使う鍵は別物
  • SSHポートの番号変更だけでは、認証強度そのものは上がらない
  • rootで直接ログインせず、一般ユーザーと sudo を使う

完了チェックリスト

  • OpenSSH Serverが起動し、22番ポートを待ち受けている
  • 初回接続時にホスト鍵のフィンガープリントを照合した
  • 秘密鍵を接続元PCから外へ出していない
  • 別セッションで鍵認証を強制し、ログインに成功した
  • sudo sshd -t がエラーなしで完了した
  • sshd -T で公開鍵認証が有効、パスワード認証・対話認証・rootログインが無効と確認した
  • reload後も新しいセッションから鍵でログインできた
  • ルーターのポート開放、DMZ、UPnPを追加していない
  • 復旧に使えるローカル画面または既存セッションを、最終確認まで残した

まとめ:先に鍵ログインを確認してから認証を絞る

安全にSSHを設定する要点は、いきなりパスワード認証を止めないことです。ホスト鍵を照合し、公開鍵を登録し、別セッションで鍵認証だけのログインを確認します。その後に設定構文と有効値を検証し、reloadしてもう一度新規接続を試します。

OpenSSHのインストール、設定ファイルの扱い、鍵作成の基本はUbuntu Server公式のOpenSSHガイド、Windows標準クライアントの概要はMicrosoft LearnのOpenSSH概要でも確認できます。公式情報の確認日は2026年7月30日です。

次の記事では、このSSH接続を使ってUbuntu ServerへDocker EngineとDocker Composeを導入し、コンテナを安全に動かす準備を進めます。

コメント

タイトルとURLをコピーしました