メインコンテンツへスキップ

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のターミナルで以下のコマンドを実行します。

$ bash
sudo apt update
sudo apt install openssh-server

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

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

  1. サービス状態の確認

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

    $ bash
    systemctl status ssh
    # または
    systemctl status ssh.socket
  2. IPアドレスの確認

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

    $ bash
    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アルゴリズムを使用します。

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

$ bash
# 書式: ssh-copy-id -i <公開鍵> <ユーザー名>@<サーバーIPアドレス>
ssh-copy-id -i ~/.ssh/id_ubuntu-2404.pub [email protected]

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

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

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

$ bash
ssh -i ~/.ssh/id_ubuntu-2404 [email protected]

SSH Configによる入力省略

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

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

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

$ bash
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

higmasan.com

Ubuntu 24.04の使い方・インストール手順まとめ|Linux

higmasan.com

サイト内検索