この記事では、 Ubuntu 24.04 LTS にSSHサーバーを導入し、外部から安全に接続する手順を解説します。 物理サーバーでも仮想マシンでも基本的な手順は同じです。今回は 「公開鍵認証(パスワードなしログイン)」 の設定までを一気通貫で行います。
検証環境
本記事の手順は、以下の物理サーバーおよび仮想環境の両方で動作検証を行っています。
| OS | アーキテクチャ | 稼働環境 | 詳細(ハード/ソフト) |
|---|---|---|---|
| Ubuntu 24.04 LTS | x86_64 | 物理サーバー | 自作PC (Intel Core i5) |
| Ubuntu 24.04 LTS | aarch64 | 仮想環境 | UTM 4.7 / Mac mini M4 Pro |
はじめに:なぜSSH設定が必要か
Ubuntu Serverを運用する場合、サーバー機に直接モニターやキーボードを繋いで操作するのは非効率です。 SSH(Secure Shell) を導入することで、以下のメリットが得られます。
- 操作性の向上: 手元のPC(Mac/Windows/Linux)のターミナルからコピペが可能になる
- セキュリティ: 通信が暗号化され、鍵認証を使えばパスワード総当たり攻撃も防げる
- リモート管理: サーバーが遠隔地やクラウド上にあっても管理できる
本記事では、単に接続するだけでなく、セキュリティ強度の高い「Ed25519」鍵を使用した認証設定まで解説します。
ステップ1:Ubuntu側でのSSHサーバー構築
まずは、サーバーとなるUbuntu 24.04側でSSH接続を受け入れる準備をします。
openssh-serverのインストール
Ubuntuのターミナルで以下のコマンドを実行します。
sudo apt updatesudo apt install openssh-server起動確認とIPアドレスの確認
インストールが完了したら、サービスの状態と、接続先となるIPアドレスを確認します。
- STEP
サービス状態の確認
Ubuntu 24.04では、インストール直後は省電力機能(Socket Activation)により、プロセス自体は停止して見えることがあります。 以下のコマンドで
Active: active(running または listening) になっていればOKです。Terminal window systemctl status ssh# またはsystemctl status ssh.socket - STEP
IPアドレスの確認
クライアントPCから接続するために必要なIPアドレスを調べます。
Terminal window ip addr show出力結果の中から、
eth0やenp~などのインターフェースにあるinet 192.168.xx.xxの部分をメモしてください。
【技術コラム】Ubuntu 24.04のSSH起動の仕組み
ここが従来のUbuntuと少し違う点です。 Ubuntu 22.10以降、SSHサービスの起動管理に Systemdのソケットアクティベーション(Socket Activation) が採用されています。
systemctl status ssh で状態確認をすると inactive(dead) と表示されることがありますが、故障ではありません。よく見ると TriggeredBy が定義されています。
一方で、 ssh.socket を確認すると active(listening) 状態になっています。
これは、 「普段は寝ていて(メモリ節約)、アクセス(ポート22への通信)が来た瞬間だけ起き上がる」 という仕組みです。 これにより、サーバーのリソース効率が最適化されています。
ステップ2:クライアントPC側の設定
ここからは**操作する側のPC(Mac / Linux / Windows WSL)**のターミナルでの操作です。
SSH鍵の生成(Ed25519)
セキュリティ強度が高く、鍵の長さが短いEd25519アルゴリズムを使用します。
# -f でファイル名を指定していますssh-keygen -t ed25519 -f ~/.ssh/id_ubuntu-2404- パスフレーズを聞かれますが、自動化重視ならEnterで空欄、セキュリティ重視なら入力してください。
~/.ssh/id_ubuntu-2404(秘密鍵)と~/.ssh/id_ubuntu-2404.pub(公開鍵)が生成されます。
公開鍵の転送(ssh-copy-id)
公開鍵をUbuntuサーバー側に登録します。これにより、次回から秘密鍵を持っているPCからのみログイン可能になります。
# 書式: ssh-copy-id -i <公開鍵> <ユーザー名>@<サーバーIPアドレス>ssh-copy-id -i ~/.ssh/id_ubuntu-2404.pub higmasan@192.168.64.17最初の1回だけはパスワード認証が必要です。Ubuntuユーザーのパスワードを入力してください。
Windows (PowerShell) の場合は ssh-copy-id が標準でないため、WSLを使用するか手動で authorized_keys に追記してください。
ステップ3:接続確認と設定の保存
鍵認証でのログインテスト
秘密鍵を指定してログインできるかテストします。パスワードを聞かれずにログインできれば成功です。
ssh -i ~/.ssh/id_ubuntu-2404 higmasan@192.168.64.17SSH Configによる入力省略
毎回IPアドレスや鍵パスを入力するのは手間なので、クライアントPCの ~/.ssh/config に設定を保存します。
Host ubuntu-2404 HostName 192.168.64.17 User higmasan IdentityFile ~/.ssh/id_ubuntu-2404これで、以下のコマンドだけで接続できるようになりました!
ssh ubuntu-2404トラブルシューティング
SSH接続がうまくいかない場合のチェックリストです。
Q. “Connection refused” と出る
- サーバー側で
openssh-serverがインストールされていますか? systemctl status ssh.socketは active ですか?- ファイアウォール(ufw)が有効な場合、
sudo ufw allow sshで許可してください。
Q. “WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!” と出る
- 以前と同じIPアドレスで、OSを再インストールした場合に出ます。
- クライアント側で
ssh-keygen -R 192.168.64.17を実行して、古いホストキー情報を削除してください。
Q. パスワードを求められ続ける
- 公開鍵が正しく転送されていません。もう一度
ssh-copy-idを試してください。 - 秘密鍵のパーミッションが緩すぎるとクライアント側で拒否されます。
chmod 600 ~/.ssh/id_ubuntu-2404を実行してください。
まとめ
この記事では、Ubuntu 24.04 LTSへのSSH接続と鍵認証の設定を行いました。
- ポイント: Ubuntu 24.04はSocket Activationで動作している
- ポイント:
ssh-copy-idを使うと鍵の登録が簡単 - ポイント:
~/.ssh/configを書くと日々の運用が楽になる
SSHがつながれば、VSCodeの「Remote - SSH」拡張機能を使って、手元のPCから直接Ubuntuサーバー内のファイルを編集することも可能です。ぜひ試してみてください。
関連記事