Ubuntu Serverを別のPCから操作できるようにすると、サーバーへ毎回モニターとキーボードをつなぐ必要がなくなります。そのために使う標準的な仕組みがSSHです。
この記事では、Ubuntu Server 26.04 LTSへ家庭内LANのWindows・macOS・Linux PCから接続し、ED25519鍵認証へ安全に切り替えます。パスワード認証を止める前に別セッションで鍵ログインを確認し、設定ミスで締め出されにくい順番で進めます。
作業中はUbuntu Serverのローカル画面と、接続済みのSSHセッションを閉じないでください。
新しい接続で鍵認証が成功するまで、既存の接続を復旧経路として残します。コマンド中の USER と SERVER_IP は自分の値へ置き換えてください。
まだUbuntu Serverを用意していない場合は、先に余ったPCで自宅サーバーを作る方法を進めてください。
- この記事で行うこと・行わないこと
- 1. Ubuntu ServerのIPアドレスを確認する
- 2. OpenSSH Serverをインストールする
- 3. 初回接続前にサーバーのホスト鍵を控える
- 4. 別PCから初回SSH接続する
- 5. 接続元PCでSSH鍵を作る
- 6. 公開鍵をUbuntu Serverへ登録する
- 7. 新しいセッションで鍵認証を強制して試す
- 8. パスワード認証を無効にする
- 9. 構文と有効値を確認してから反映する
- 10. もう一度、新しいセッションで確認する
- 接続できなくなったときの戻し方
- UFWを使っている場合の確認
- よくある誤解と安全のポイント
- 完了チェックリスト
- まとめ:先に鍵ログインを確認してから認証を絞る
この記事で行うこと・行わないこと

今回のゴール
- 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.service が active (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鍵を作る

SSHのパスワード認証も通信自体は暗号化されます。一方、鍵認証へ切り替えると、推測や使い回しの影響を受けるログインパスワードへの依存を減らせます。
接続元PCで次を実行します。すでに id_ed25519 があると上書き確認が出るため、上書きせず既存鍵を使うか、別名を指定してください。
ssh-keygen -t ed25519 -C "home-server"
保存先は、初めてなら既定値のままで構いません。秘密鍵をPCごと持ち去られた場合に備え、鍵のパスフレーズは空にしないことをおすすめします。これはUbuntuのログインパスワードとは別のものです。
id_ed25519 は秘密鍵です。サーバーへコピーしたり、メールやチャットで送ったりしないでください。
末尾が .pub の id_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セッションは残したまま、別の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を導入し、コンテナを安全に動かす準備を進めます。



コメント