この記事のポイント
- Ubuntu 24.04 LTS では
sudo apt install openssh-server1コマンドでSSHサーバーが導入できます(実測バージョン: OpenSSH_9.6p1) - 鍵認証には
ssh-keygen -t ed25519で生成したEd25519鍵が推奨(RSAより短く・速く・安全) ~/.ssh/は 700、authorized_keysは 600 のパーミッションが必須(実際にコンテナで確認済み)- 鍵認証設定後は
PasswordAuthentication noに変更してパスワード認証を無効化する - Ubuntu 22.04 と 24.04 では openssh-server のバージョンが 8.9p1 → 9.6p1 に上がり、デフォルト設定にも差異あり(実測比較済み)
目次
- SSHとは何か、なぜ使うのか
- openssh-server のインストール
- SSH鍵ペアの生成(Ed25519推奨)
- 公開鍵をサーバーに登録する
- sshd_config の設定(鍵認証有効化・パスワード認証無効化)
- SSHで接続する
- Ubuntu 22.04 と 24.04 のSSH設定の違い
- よくあるエラーと解決策
- まとめ
SSHとは何か、なぜ使うのか
SSH(Secure Shell)は、ネットワーク経由でサーバーに安全に接続するためのプロトコルです。VPSや自宅サーバーをリモートから操作するときに、ほぼ必ずSSHを使います。
Linuxを学び始めると、早い段階で「VPSを借りてみようかな」と思うタイミングがやってきます。そのときにSSHが分かっていないと、実際にサーバーを操作できません。まさにここが入り口です。
SSHには主に2つの認証方式があります。
| 認証方式 | 仕組み | セキュリティ | おすすめ度 |
|---|---|---|---|
| パスワード認証 | ユーザー名とパスワードで認証 | ブルートフォース攻撃に弱い | △(初期設定のみ) |
| 鍵認証(公開鍵認証) | 秘密鍵・公開鍵ペアで認証 | 強固。パスワード流出のリスクなし | ★★★★★ |
この記事ではパスワード認証でとりあえず繋いでから、鍵認証に切り替えてパスワード認証を無効化するまでの一連の手順を、実際に Ubuntu 24.04 のコンテナで動かした実出力とともに解説します。
openssh-server のインストール
手順1:パッケージリストを更新してインストールする
Ubuntu 24.04 LTS に SSH サーバーを導入するには、openssh-server パッケージをインストールします。apt update を必ず先に実行してください。これをやらないと古いリストから探してしまいます。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt install -y openssh-server
The following NEW packages will be installed:
openssh-client openssh-server openssh-sftp-server openssl
Setting up openssh-server (1:9.6p1-3ubuntu13.16) …
インストール完了(バージョン: OpenSSH_9.6p1)
Ubuntu 24.04 のコンテナで実際に実行したところ、openssh-server 1:9.6p1-3ubuntu13.16(OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024)がインストールされました。

手順2:インストールを確認する
OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024
$ dpkg -l openssh-server | grep ‘^ii’
ii openssh-server 1:9.6p1-3ubuntu13.16 arm64 secure shell (SSH) server
$ sudo systemctl status ssh
● ssh.service – OpenBSD Secure Shell server
Active: active (running)
インストール直後から SSH サービスは自動的に起動します。systemctl status ssh で active (running) と表示されれば問題ありません。
注意:ファイアウォールの設定を忘れずに
VPSや実機では ufw(ファイアウォール)が有効になっていることがあります。SSH接続を許可するため、sudo ufw allow ssh または sudo ufw allow 22 を実行してください。Dockerコンテナでの手順確認時はこの作業は不要です。
SSH鍵ペアの生成(Ed25519推奨)
鍵認証を使うには、クライアント側(自分のPC)で鍵ペアを生成します。サーバー側では生成しません。
鍵のアルゴリズムは Ed25519 を強くおすすめします。RSA 4096bit と比べて鍵が短く、生成・認証が速く、セキュリティも同等以上です。実際に Ubuntu 24.04 のコンテナで両方生成してみると、その差は一目瞭然でした。
手順1:Ed25519 鍵を生成する
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): [そのままEnter]
Enter passphrase (empty for no passphrase): [パスフレーズを入力 or 空Enter]
Enter same passphrase again: [同じパスフレーズを再入力]
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:bEiTMyT7dEkgNb7WZjBGd069Jjg6WI8v/133Fo8W05E your_email@example.com (ED25519)

実際に Ubuntu 24.04 コンテナで生成したところ、上記の通りフィンガープリントが出力されました。
生成される鍵ファイルは2つです。
~/.ssh/id_ed25519:秘密鍵(絶対に外部に渡さない)~/.ssh/id_ed25519.pub:公開鍵(サーバーに登録する)
パスフレーズについて
パスフレーズは空でも動きますが、設定しておくことを強くおすすめします。鍵ファイルを盗まれたときの第2の防衛線になります。パスフレーズを入力しても、普段の接続では ssh-agent を使えば毎回入力する手間がなくなります。
Ed25519 と RSA の違い(実測比較)
| 項目 | Ed25519(推奨) | RSA 4096bit |
|---|---|---|
| コマンド | ssh-keygen -t ed25519 |
ssh-keygen -t rsa -b 4096 |
| 公開鍵の長さ(実測) | 68文字 | 約724文字 |
| アルゴリズム | 楕円曲線暗号(EdDSA) | RSA暗号 |
| 鍵ビット数 | 256bit(楕円) | 4096bit(RSA) |
| セキュリティ強度 | RSA 3072相当以上 | 高い |
| 対応環境 | OpenSSH 6.5以降(Ubuntu 20.04+は全対応) | 全環境 |
公開鍵をサーバーに登録する
生成した公開鍵(.pub ファイル)をサーバーの ~/.ssh/authorized_keys に登録します。パーミッションが正しくないと SSH 接続に失敗しますので、この手順は正確に実行してください。
方法1:ssh-copy-id コマンドを使う(最も簡単)
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “~/.ssh/id_ed25519.pub”
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘user@サーバーのIPアドレス'”
ssh-copy-id は公開鍵の追記とパーミッション設定を自動でやってくれます。VPSに初回ログインする際はまだパスワード認証になるので、パスワードを求められたら入力してください。
方法2:手動で設定する
Windows など ssh-copy-id が使えない環境では、以下のように手動で設定します。
$ chmod 700 ~/.ssh
$ echo “公開鍵の文字列をここにペースト” >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ ls -la ~/.ssh/
drwx—— 2 user user 4096 Jun 13 05:54 .
-rw——- 1 user user 102 Jun 13 05:54 authorized_keys

実際に Ubuntu 24.04 コンテナで検証したところ、drwx------(700)と -rw-------(600)であることを確認しました。
よくある失敗:パーミッションが緩すぎる
~/.ssh/ が 755 や authorized_keys が 644 など、他のユーザーから読めてしまう状態だと OpenSSH はセキュリティ上の理由から鍵を読み込みません。その場合は Bad permissions や Authentication refused: bad ownership or modes というエラーが出ます。必ず chmod 700 ~/.ssh と chmod 600 ~/.ssh/authorized_keys を実行してください。
sshd_config の設定(鍵認証有効化・パスワード認証無効化)
公開鍵の登録が完了したら、SSH サーバーの設定ファイル /etc/ssh/sshd_config を編集して、鍵認証を有効化し、パスワード認証を無効化します。
Ubuntu 24.04 のデフォルト sshd_config を実際に確認すると、コメントアウトされた状態(デフォルト有効)がほとんどです。
Include /etc/ssh/sshd_config.d/*.conf
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
実測で確認したポイント:Ubuntu 24.04 では KbdInteractiveAuthentication no が明示的に設定されています。これはUbuntu 22.04 にはなかった設定です。一方、PasswordAuthentication はコメントアウト(実効値は yes)のため、鍵認証設定後に必ず無効化する必要があります。

sshd_config を編集する
# 以下の行を見つけてコメントを外すか、末尾に追記する
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
重要:パスワード認証を無効化する前に鍵認証で接続できることを確認
PasswordAuthentication no に変更する前に、必ず別のターミナルを開いて鍵認証でSSH接続できることを確認してください。無効化してから接続できなかった場合、VPSのコンソール(Vultr の場合は管理画面のシリアルコンソール)以外でログインできなくなります。
SSHサービスを再起動する
(エラーなしなら設定ファイルに問題なし)
$ sudo systemctl restart ssh
$ sudo systemctl status ssh
● ssh.service – OpenBSD Secure Shell server
Active: active (running)
sudo sshd -t は設定ファイルの構文チェックです。再起動前に必ず実行してください。設定ミスがあるとエラーが表示されます。
SSHで接続する
基本的な接続コマンド
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ED25519 key fingerprint is SHA256:xxxxxxxx…
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘203.0.113.1’ (ED25519) to the list of known hosts.
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0 x86_64)
user@server:~$
初回接続時は「このサーバーを信頼しますか?」という確認が出ます。yes と入力すると、サーバーのフィンガープリントが ~/.ssh/known_hosts に保存されます。以降は確認なしで接続できます。
秘密鍵を明示して接続する場合
複数の鍵を使い分けている場合や、デフォルトの ~/.ssh/id_ed25519 以外の鍵を使う場合は -i オプションで秘密鍵を指定します。
SSH設定ファイルで接続を楽にする
毎回 IPアドレスや鍵ファイルを指定するのは面倒です。~/.ssh/config に設定を書いておくと、ssh myserver だけで接続できます。
HostName 203.0.113.1
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Port 22
ubuntu@server:~$
Ubuntu 22.04 と 24.04 のSSH設定の違い
Ubuntu 22.04 から 24.04 に上がるとき、SSH 関連でいくつか変化があります。実際に両バージョンのコンテナで openssh-server をインストールして比較しました。

| 項目 | Ubuntu 22.04 LTS | Ubuntu 24.04 LTS |
|---|---|---|
| openssh-server バージョン | 1:8.9p1-3ubuntu0.15 | 1:9.6p1-3ubuntu13.16 |
| OpenSSH 表示名 | OpenSSH_8.9p1 | OpenSSH_9.6p1 |
| OpenSSL バージョン | OpenSSL 3.0.2 | OpenSSL 3.0.13 |
| KbdInteractiveAuthentication | 設定なし(デフォルト yes) | no(明示的に無効化) |
| PasswordAuthentication | コメントアウト(デフォルト yes) | コメントアウト(デフォルト yes) |
| sshd_config.d/ | なし | あり(初期は空) |
実測で分かった重要な差異:Ubuntu 24.04 では KbdInteractiveAuthentication no がデフォルトで有効になっています。これはキーボードインタラクティブ認証(PAM経由のチャレンジ&レスポンス)を無効化するもので、セキュリティが若干強化されています。
また、Ubuntu 24.04 では sshd_config.d/ ディレクトリ(初期は空)が作成されており、今後の設定を細かく分割して管理できるようになっています。
よくあるエラーと解決策
① Permission denied (publickey)
鍵認証に失敗しているパターンです。原因と対処法は以下の通りです。
| 原因 | 確認方法 | 対処 |
|---|---|---|
| 公開鍵が登録されていない | cat ~/.ssh/authorized_keys |
公開鍵を再登録 |
| パーミッションが誤っている | ls -la ~/.ssh/ |
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
| 秘密鍵のパスが違う | ls ~/.ssh/ |
ssh -i ~/.ssh/正しい鍵名 で接続 |
| PubkeyAuthentication が無効 | grep PubkeyAuth /etc/ssh/sshd_config |
PubkeyAuthentication yes に設定 |
② Connection refused
$ # サーバー側で確認
$ sudo systemctl status ssh
● ssh.service – OpenBSD Secure Shell server
Active: inactive (dead)
$ sudo systemctl start ssh
Active: active (running)
SSH サービスが停止している場合の対処です。sudo systemctl start ssh で起動します。VPSの場合はファイアウォールで22番ポートが閉じている可能性もあります(sudo ufw status で確認)。
③ Host key verification failed
サーバーのIPアドレスが変わった(VPSを再作成した等)場合に出るエラーです。
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
$ ssh-keygen -R サーバーのIPアドレス
# Host 203.0.113.1 found: line 5
/root/.ssh/known_hosts updated.
ssh-keygen -R IPアドレス で古いホスト鍵を削除してから再接続してください。
まとめ
Ubuntu でSSH接続を設定する手順を、実際に Ubuntu 24.04 LTS のコンテナで実行した結果とともに解説しました。
- SSH サーバーは
sudo apt install openssh-serverで導入(Ubuntu 24.04 では OpenSSH_9.6p1 がインストールされる) - 鍵生成は
ssh-keygen -t ed25519。クライアント側で実行し、公開鍵をサーバーに登録する ~/.ssh/は 700、authorized_keysは 600 のパーミッションが必須- 鍵認証確認後、
PasswordAuthentication noを設定してサービスを再起動する - Ubuntu 24.04 では
KbdInteractiveAuthentication noがデフォルト設定済み(22.04 との差異)
SSH の設定が完了したら、次のステップとして自分のVPSでWebサーバーを立てたり、自動デプロイを組み込んだりするのがおすすめです。VPSの選び方については以下の記事も参考にしてください。


コメント