Ubuntu 24.04 LTSでSSHサーバー構築&鍵認証を設定する方法

公開日:

この記事では、 Ubuntu 24.04 LTS にSSHサーバーを導入し、外部から安全に接続する手順を解説します。 物理サーバーでも仮想マシンでも基本的な手順は同じです。今回は 「公開鍵認証(パスワードなしログイン)」 の設定までを一気通貫で行います。

検証環境

本記事の手順は、以下の物理サーバーおよび仮想環境の両方で動作検証を行っています。

OSアーキテクチャ稼働環境詳細(ハード/ソフト)
Ubuntu 24.04 LTSx86_64物理サーバー自作PC (Intel Core i5)
Ubuntu 24.04 LTSaarch64仮想環境UTM 4.7 / Mac mini M4 Pro

はじめに:なぜSSH設定が必要か

Ubuntu Serverを運用する場合、サーバー機に直接モニターやキーボードを繋いで操作するのは非効率です。 SSH(Secure Shell) を導入することで、以下のメリットが得られます。

  1. 操作性の向上: 手元のPC(Mac/Windows/Linux)のターミナルからコピペが可能になる
  2. セキュリティ: 通信が暗号化され、鍵認証を使えばパスワード総当たり攻撃も防げる
  3. リモート管理: サーバーが遠隔地やクラウド上にあっても管理できる

本記事では、単に接続するだけでなく、セキュリティ強度の高い「Ed25519」鍵を使用した認証設定まで解説します。


ステップ1:Ubuntu側でのSSHサーバー構築

まずは、サーバーとなるUbuntu 24.04側でSSH接続を受け入れる準備をします。

openssh-serverのインストール

Ubuntuのターミナルで以下のコマンドを実行します。

Terminal window
sudo apt update
sudo apt install openssh-server

起動確認とIPアドレスの確認

インストールが完了したら、サービスの状態と、接続先となるIPアドレスを確認します。

  1. STEP

    サービス状態の確認

    Ubuntu 24.04では、インストール直後は省電力機能(Socket Activation)により、プロセス自体は停止して見えることがあります。 以下のコマンドで Active: active (running または listening) になっていればOKです。

    Terminal window
    systemctl status ssh
    # または
    systemctl status ssh.socket
  2. STEP

    IPアドレスの確認

    クライアントPCから接続するために必要なIPアドレスを調べます。

    Terminal window
    ip addr show

    出力結果の中から、eth0enp~ などのインターフェースにある inet 192.168.xx.xx の部分をメモしてください。

【技術コラム】Ubuntu 24.04のSSH起動の仕組み

ここが従来のUbuntuと少し違う点です。 Ubuntu 22.10以降、SSHサービスの起動管理に Systemdのソケットアクティベーション(Socket Activation) が採用されています。

systemctl status ssh で状態確認をすると inactive(dead) と表示されることがありますが、故障ではありません。よく見ると TriggeredBy が定義されています。

sshサービスの状態確認

一方で、 ssh.socket を確認すると active(listening) 状態になっています。

sshソケットの状態確認

これは、 「普段は寝ていて(メモリ節約)、アクセス(ポート22への通信)が来た瞬間だけ起き上がる」 という仕組みです。 これにより、サーバーのリソース効率が最適化されています。


ステップ2:クライアントPC側の設定

ここからは**操作する側のPC(Mac / Linux / Windows WSL)**のターミナルでの操作です。

SSH鍵の生成(Ed25519)

セキュリティ強度が高く、鍵の長さが短いEd25519アルゴリズムを使用します。

Terminal window
# -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からのみログイン可能になります。

Terminal window
# 書式: ssh-copy-id -i <公開鍵> <ユーザー名>@<サーバーIPアドレス>
ssh-copy-id -i ~/.ssh/id_ubuntu-2404.pub higmasan@192.168.64.17
info-icon warning

最初の1回だけはパスワード認証が必要です。Ubuntuユーザーのパスワードを入力してください。 Windows (PowerShell) の場合は ssh-copy-id が標準でないため、WSLを使用するか手動で authorized_keys に追記してください。


ステップ3:接続確認と設定の保存

鍵認証でのログインテスト

秘密鍵を指定してログインできるかテストします。パスワードを聞かれずにログインできれば成功です。

Terminal window
ssh -i ~/.ssh/id_ubuntu-2404 higmasan@192.168.64.17

SSH Configによる入力省略

毎回IPアドレスや鍵パスを入力するのは手間なので、クライアントPCの ~/.ssh/config に設定を保存します。

~/.ssh/config
Host ubuntu-2404
HostName 192.168.64.17
User higmasan
IdentityFile ~/.ssh/id_ubuntu-2404

これで、以下のコマンドだけで接続できるようになりました!

Terminal window
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サーバー内のファイルを編集することも可能です。ぜひ試してみてください。

関連記事

Ubuntu 24.04 LTSにVSCodeをインストールする方法|公式リポジトリ・Snap
Ubuntu 24.04 LTSにVSCodeをインストールする方法|公式リポジトリ・Snap
Ubuntu 24.04 LTS (ARM64対応) にVisual Studio Codeをインストールする完全ガイド。推奨されるaptリポジトリ経由の手順と、Snap版の現状について解説。
example.com
Ubuntu 24.04の使い方・インストール手順まとめ|Linux
Ubuntu 24.04の使い方・インストール手順まとめ|Linux
Ubuntu 24.04 LTS (Noble Numbat) のインストール手順から、日本語化、Docker、VSCodeなどの環境構築までを網羅したセットアップガイドです。
example.com