メインコンテンツへスキップ
  1. Linux 関連記事一覧/
  2. Ubuntu 26.04 LTS Server/

Ubuntu 26.04 LTS Server の SSH サーバー設定(公開鍵認証)

目次

SSH サーバーの導入と設定方法

Ubuntu 26.04 LTS Server にリモートからログインするための SSH サーバー(OpenSSH)の導入手順と、公開鍵認証・パスワード認証の無効化・root ログインの制限・ポート番号の変更といった設定手順を解説します。

本記事の実行例は、サーバー側が kazulog@sv1、接続先が 10.19.12.11 の環境で採取したものです。OpenSSH のバージョンは 10.2p1 です。

openssh-server が導入されているかの確認

インストーラで「Install OpenSSH server」を選択した場合やクラウドイメージでは既に導入されています。導入済みかどうかは dpkg -l で確認します。

openssh-server の導入確認コマンド
dpkg -l openssh-server
openssh-server が導入されていない場合の実行例
kazulog@sv1:~$ dpkg -l openssh-server

+-- Desired=Unknown/Install/Remove/Purge/Hold
|+- Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
||+ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||| Name           Version      Architecture Description
+++-==============-============-============-=================================
un  openssh-server <none>       <none>       (no description available)
kazulog@sv1:~$

ii で始まる行が表示されれば導入済み、un の場合は未導入です。未導入の場合は systemctl からもサービスが見えず、22番ポートも開いていません。

未導入時のサービスとポートの確認 実行例
kazulog@sv1:~$ systemctl status ssh --no-pager
Unit ssh.service could not be found.

kazulog@sv1:~$ ss -tlnp
State    Recv-Q   Send-Q     Local Address:Port     Peer Address:Port  Process  
LISTEN   0        4096          127.0.0.54:53            0.0.0.0:*              
LISTEN   0        4096       127.0.0.53%lo:53            0.0.0.0:*              
kazulog@sv1:~$ ls /etc/ssh/
ssh_config  ssh_config.d  ssh_import_id	 sshd_config.d
kazulog@sv1:~$

openssh-server のインストール

openssh-server のインストールコマンド
sudo apt update
sudo apt install -y openssh-server
openssh-server のインストール実行例
kazulog@sv1:~$ sudo apt-get install -y openssh-server
/snip/
The following additional packages will be installed:
  openssh-client openssh-sftp-server
Suggested packages:
  molly-guard monkeysphere ssh-askpass
The following NEW packages will be installed:
  openssh-server
The following packages will be upgraded:
  openssh-client openssh-sftp-server
2 upgraded, 1 newly installed, 0 to remove and 89 not upgraded.
Need to get 1594 kB of archives.
After this operation, 2903 kB of additional disk space will be used.
/snip/
Get:1 http://archive.ubuntu.com/ubuntu resolute-updates/main amd64 openssh-sftp-server amd64 1:10.2p1-2ubuntu3.6 [37.4 kB]
Get:2 http://archive.ubuntu.com/ubuntu resolute-updates/main amd64 openssh-client amd64 1:10.2p1-2ubuntu3.6 [935 kB]
Get:3 http://archive.ubuntu.com/ubuntu resolute-updates/main amd64 openssh-server amd64 1:10.2p1-2ubuntu3.6 [622 kB]
Fetched 1594 kB in 3s (576 kB/s)
Preconfiguring packages ...
Preparing to unpack .../openssh-sftp-server_1%3a10.2p1-2ubuntu3.6_amd64.deb ...
Unpacking openssh-sftp-server (1:10.2p1-2ubuntu3.6) over (1:10.2p1-2ubuntu3.5) ...
Preparing to unpack .../openssh-client_1%3a10.2p1-2ubuntu3.6_amd64.deb ...
Unpacking openssh-client (1:10.2p1-2ubuntu3.6) over (1:10.2p1-2ubuntu3.5) ...
Selecting previously unselected package openssh-server.
Preparing to unpack .../openssh-server_1%3a10.2p1-2ubuntu3.6_amd64.deb ...
Unpacking openssh-server (1:10.2p1-2ubuntu3.6) ...
Setting up openssh-client (1:10.2p1-2ubuntu3.6) ...
Setting up openssh-sftp-server (1:10.2p1-2ubuntu3.6) ...
Setting up openssh-server (1:10.2p1-2ubuntu3.6) ...
Creating config file /etc/ssh/sshd_config with new version
Creating SSH2 RSA key; this may take some time ...
3072 SHA256:yPzZfYBLregCDh6TUn9u8D+dz88uz/sUuPws3BEyJCc root@sv1 (RSA)
Creating SSH2 ECDSA key; this may take some time ...
256 SHA256:eVS1zCTSGxd3paUBUk5E9UzYJe+zTP0EvQeYulweXvw root@sv1 (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 SHA256:vDLOqQp6GgOzTjPqeoR46WuIvZDNbZwA6yCtoqLsv/A root@sv1 (ED25519)
Creating user 'sshd' (sshd user) with UID 986 and GID 65534.
Created symlink '/etc/systemd/system/sockets.target.wants/ssh.socket''/usr/lib/systemd/system/ssh.socket'.
Created symlink '/etc/systemd/system/ssh.service.requires/ssh.socket''/usr/lib/systemd/system/ssh.socket'.
Created symlink '/etc/systemd/system/ssh.service.wants/sshd-keygen.service''/usr/lib/systemd/system/sshd-keygen.service'.
Created symlink '/etc/systemd/system/sshd.service.wants/sshd-keygen.service''/usr/lib/systemd/system/sshd-keygen.service'.
Created symlink '/etc/systemd/system/sshd@.service.wants/sshd-keygen.service''/usr/lib/systemd/system/sshd-keygen.service'.
Created symlink '/etc/systemd/system/ssh.socket.wants/sshd-keygen.service''/usr/lib/systemd/system/sshd-keygen.service'.
Processing triggers for man-db (2.13.1-1build1) ...
Processing triggers for ufw (0.36.2-9build1) ...
/snip/
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
kazulog@sv1:~$

インストール時にホスト鍵(RSA / ECDSA / ED25519)が自動生成され、サービスが有効化されます。インストール直後から22番ポートで接続を受け付ける状態になるため、追加の起動操作は不要です。

SSH サーバーの状態確認

SSH サーバーの状態確認コマンド
systemctl status ssh
ss -tlnp
SSH サーバーの状態確認 実行例
kazulog@sv1:~$ systemctl status ssh --no-pager -l | cat
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: active (running) since Thu 2026-09-10 14:39:29 JST; 1min 39s ago
 Invocation: 049398a869f542468581164f8dd0f5af
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 1021 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 1060 (sshd)
      Tasks: 1 (limit: 1486)
     Memory: 7.7M (peak: 9.4M)
        CPU: 408ms
     CGroup: /system.slice/ssh.service
             └─1060 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Sep 10 14:40:00 sv1 sshd-session[1231]: Accepted publickey for kazulog from 10.100.3.1 port 63509 ssh2: ED25519 SHA256:NdURwOz/PbiL79UHvTtYE5vuTJfA2RD5RXsn/rG76rw
Sep 10 14:40:00 sv1 sshd-session[1231]: pam_unix(sshd:session): session opened for user kazulog(uid=1000) by kazulog(uid=0)
Sep 10 14:40:02 sv1 sshd-session[1367]: Accepted publickey for kazulog from 10.100.3.1 port 63510 ssh2: ED25519 SHA256:NdURwOz/PbiL79UHvTtYE5vuTJfA2RD5RXsn/rG76rw
Sep 10 14:40:02 sv1 sshd-session[1367]: pam_unix(sshd:session): session opened for user kazulog(uid=1000) by kazulog(uid=0)
Sep 10 14:40:03 sv1 sshd-session[1367]: syslogin_perform_logout: logout() returned an error
Sep 10 14:40:03 sv1 sshd-session[1367]: pam_unix(sshd:session): session closed for user kazulog
Sep 10 14:40:38 sv1 sshd-session[1584]: Accepted publickey for kazulog from 10.100.3.1 port 63530 ssh2: ED25519 SHA256:NdURwOz/PbiL79UHvTtYE5vuTJfA2RD5RXsn/rG76rw
Sep 10 14:40:38 sv1 sshd-session[1584]: pam_unix(sshd:session): session opened for user kazulog(uid=1000) by kazulog(uid=0)
Sep 10 14:41:07 sv1 sshd-session[1824]: Accepted publickey for kazulog from 10.100.3.1 port 63549 ssh2: ED25519 SHA256:NdURwOz/PbiL79UHvTtYE5vuTJfA2RD5RXsn/rG76rw
Sep 10 14:41:07 sv1 sshd-session[1824]: pam_unix(sshd:session): session opened for user kazulog(uid=1000) by kazulog(uid=0)
kazulog@sv1:~$
待ち受けポートの確認 実行例
kazulog@sv1:~$ ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      4096      127.0.0.54:53        0.0.0.0:*          
LISTEN 0      4096   127.0.0.53%lo:53        0.0.0.0:*          
LISTEN 0      4096         0.0.0.0:22        0.0.0.0:*          
LISTEN 0      4096            [::]:22           [::]:*          
kazulog@sv1:~$
Ubuntu 26.04 の SSH は ソケット起動(socket activation) です。ssh.service 自体は disabled で、ssh.socket が22番ポートを開いて待ち受け、接続が来たときに ssh.service が起動します。systemctl is-enabled で両者を比べると違いが分かります。この構成のため、ポート番号の変更手順が従来と異なります(後述)。
ssh.service と ssh.socket の有効・無効 実行例
kazulog@sv1:~$ systemctl is-enabled ssh ssh.socket
disabled
enabled
kazulog@sv1:~$

パスワード認証で接続する

クライアントから ssh [ユーザー名]@[サーバーのIPアドレス] で接続します。

SSH 接続コマンド(クライアント側)
ssh [NAME]@[IP]
入力箇所入力内容
[NAME]接続先サーバーのユーザー名
[IP]接続先サーバーのIPアドレス
パスワード認証での接続 実行例(クライアント側)
taro@10.19.12.11's password: 
Welcome to Ubuntu 26.04 LTS (GNU/Linux 7.0.0-30-generic x86_64)

 * Documentation:  https://docs.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Thu Sep 10 14:48:26 JST 2026

  System load:  0.18              Processes:             111
  Usage of /:   3.6% of 60.93GB   Users logged in:       0
  Memory usage: 12%               IPv4 address for ens2: 10.19.12.11
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

96 updates can be applied immediately.
87 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


Last login: Thu Sep 10 14:47:34 2026 from 10.100.3.1
taro@sv1:~$ whoami
taro

接続の成否はサーバー側の journalctl で確認できます。パスワード認証で成功した場合は Accepted password が記録されます。

認証ログの確認コマンド
sudo journalctl -u ssh
パスワード認証成功時のログ 実行例
kazulog@sv1:~$ sudo journalctl -u ssh --since '3 min ago' --no-pager | grep -E 'taro' | tail -5
Sep 10 14:47:34 sv1 sshd-session[3981]: Accepted password for taro from 10.100.3.1 port 63884 ssh2
Sep 10 14:47:34 sv1 sshd-session[3981]: pam_unix(sshd:session): session opened for user taro(uid=1001) by taro(uid=0)
Sep 10 14:47:35 sv1 sshd-session[3981]: pam_unix(sshd:session): session closed for user taro

公開鍵認証の設定

鍵ペアを作成する

クライアント側で ssh-keygen を実行します。-t ed25519 は鍵の種類の指定で、現在の推奨です。保存先とパスフレーズを聞かれますが、既定のままでよければ Enter で進みます。

鍵ペアの作成コマンド(クライアント側)
ssh-keygen -t ed25519 -C "[COMMENT]"
入力箇所入力内容
[COMMENT]鍵の識別用コメント(省略可。ユーザー名や端末名を入れる)
鍵ペアの作成 実行例
kazulog@sv1:~$ ssh-keygen -t ed25519 -C 'kazulog@client'
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/kazulog/.ssh/id_ed25519): 
Enter passphrase for "/home/kazulog/.ssh/id_ed25519" (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/kazulog/.ssh/id_ed25519
Your public key has been saved in /home/kazulog/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:TacHzXz0/ATZw/mJpyrO5/5UTf6VseuQMZNq6LagEF8 kazulog@client
The key's randomart image is:
+--[ED25519 256]--+
|              +o.|
|           + ..B.|
|          o = o.O|
|         o + o.*B|
|   .   ES o .=o+=|
|    o .   ....* +|
|   . . . . o.+ ..|
|    . . +o.o. o  |
|     .  o=*o.. . |
+----[SHA256]-----+
kazulog@sv1:~$

秘密鍵 id_ed25519 と公開鍵 id_ed25519.pub が作成されます。秘密鍵は配布せず、クライアント側に置いたままにします。

公開鍵をサーバーへ配置する

ssh-copy-id を使うと、公開鍵をサーバーの ~/.ssh/authorized_keys へ追記できます。実行にはパスワード認証で接続できる必要があります。

公開鍵の配置コマンド(クライアント側)
ssh-copy-id [NAME]@[IP]
公開鍵の配置 実行例
kazulog@sv1:~$ ssh-copy-id taro@localhost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/kazulog/.ssh/id_ed25519.pub"
The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is: SHA256:vDLOqQp6GgOzTjPqeoR46WuIvZDNbZwA6yCtoqLsv/A
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
taro@localhost's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'taro@localhost'"
and check to make sure that only the key(s) you wanted were added.

kazulog@sv1:~$ sudo ls -la /home/taro/.ssh/
total 12
drwx------ 2 taro taro 4096 Sep 10 14:50 .
drwxr-x--- 4 taro taro 4096 Sep 10 14:50 ..
-rw------- 1 taro taro   96 Sep 10 14:50 authorized_keys
kazulog@sv1:~$ sudo cat /home/taro/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEMqxsy1w3cy075/v+S2ltHfVQOMZIYrE7yBHCwiqhUT kazulog@client

.ssh ディレクトリは700、authorized_keys は600である必要があります。ssh-copy-id はこの権限も設定します。

ssh-copy-id が使えない環境では、公開鍵の内容を手動で追記します。

公開鍵を手動で配置する場合
cat ~/.ssh/id_ed25519.pub | ssh [NAME]@[IP] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

公開鍵認証で接続する

配置後は、パスワードを入力せずに接続できます。ログには Accepted publickey が記録されます。

公開鍵認証での接続と認証ログ 実行例
kazulog@sv1:~$ ssh taro@localhost
Welcome to Ubuntu 26.04 LTS (GNU/Linux 7.0.0-30-generic x86_64)

 * Documentation:  https://docs.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Thu Sep 10 14:50:35 JST 2026

  System load:  0.12              Processes:             108
  Usage of /:   3.6% of 60.93GB   Users logged in:       0
  Memory usage: 12%               IPv4 address for ens2: 10.19.12.11
  Swap usage:   0%


Expanded Security Maintenance for Applications is not enabled.

96 updates can be applied immediately.
87 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


Last login: Thu Sep 10 14:48:26 2026 from 10.100.3.1
taro@sv1:~$ whoami
taro
taro@sv1:~$ exit
logout
Connection to localhost closed.
kazulog@sv1:~$ sudo journalctl -u ssh --no-pager --since '2 min ago' | grep -E 'taro' | tail -3
Sep 10 14:50:44 sv1 sshd-session[5095]: Accepted publickey for taro from ::1 port 35702 ssh2: ED25519 SHA256:TacHzXz0/ATZw/mJpyrO5/5UTf6VseuQMZNq6LagEF8
Sep 10 14:50:44 sv1 sshd-session[5095]: pam_unix(sshd:session): session opened for user taro(uid=1001) by taro(uid=0)
Sep 10 14:50:44 sv1 sshd-session[5095]: pam_unix(sshd:session): session closed for user taro

設定ファイルの構成

SSH サーバーの設定は /etc/ssh/sshd_config ですが、このファイル自体は編集せず、/etc/ssh/sshd_config.d/ 配下に .conf ファイルを追加しますsshd_config の先頭付近にある Include により読み込まれます。

Include の確認と既定のドロップイン 実行例
kazulog@sv1:~$ grep -n 'Include' /etc/ssh/sshd_config
24:Include /etc/ssh/sshd_config.d/*.conf
kazulog@sv1:~$ ls -l /etc/ssh/sshd_config.d/
total 8
-rw------- 1 root root 27 Sep 10 13:30 50-cloud-init.conf
-rw-r--r-- 1 root root 26 Aug 24 01:26 60-cloudimg-settings.conf
kazulog@sv1:~$ sudo head -100 /etc/ssh/sshd_config.d/50-cloud-init.conf /etc/ssh/sshd_config.d/60-cloudimg-settings.conf
==> /etc/ssh/sshd_config.d/50-cloud-init.conf <==
PasswordAuthentication yes

==> /etc/ssh/sshd_config.d/60-cloudimg-settings.conf <==
PasswordAuthentication no
kazulog@sv1:~$
sshd_config では、同じ項目が複数あった場合に「最初に読まれた値」が有効になります。 Include はファイル名の辞書順に読み込むため、既にあるファイルより小さい番号を付けないと設定が上書きされません。上の例では 50-cloud-init.confPasswordAuthentication yes があるため、99- で始まるファイルに no と書いても効きません。

設定の最終的な値は sshd -T で確認できます。ファイルを追加しただけでは反映されないため、必ずこのコマンドで確かめてください。

設定値の確認コマンド
sudo sshd -T | grep -i [KEYWORD]

パスワード認証を無効にする

公開鍵認証だけを許可し、パスワード認証を無効にします。設定ファイルを作成したら、sshd -t で構文を確認してから systemctl reload ssh で反映します。

パスワード認証を無効にするコマンド
echo 'PasswordAuthentication no' | sudo tee /etc/ssh/sshd_config.d/10-hardening.conf
sudo sshd -t
sudo systemctl reload ssh
設定ファイルの作成と反映 実行例
kazulog@sv1:~$ sudo grep -H PasswordAuthentication /etc/ssh/sshd_config.d/*.conf
/etc/ssh/sshd_config.d/10-hardening.conf:PasswordAuthentication no
/etc/ssh/sshd_config.d/50-cloud-init.conf:PasswordAuthentication yes
/etc/ssh/sshd_config.d/60-cloudimg-settings.conf:PasswordAuthentication no
kazulog@sv1:~$ sudo sshd -T | grep -i passwordauthentication
passwordauthentication no

passwordauthentication no になっていれば有効です。この状態でパスワード認証だけを使って接続すると、パスワードを入力する前に拒否されます。

パスワード認証が拒否される 実行例(クライアント側)
taro@10.19.12.11: Permission denied (publickey).

公開鍵を配置済みのユーザーは、これまでどおり接続できます。

公開鍵認証は引き続き利用できる 実行例
kazulog@sv1:~$ ssh taro@localhost whoami
taro
kazulog@sv1:~$

root でのログインを禁止する

PermitRootLogin の既定値は prohibit-password です。パスワードでの root ログインは禁止されますが、root に公開鍵を配置している場合は鍵でログインできます。root でのログインを完全に禁止するには no を指定します。

root ログインを禁止するコマンド
printf 'PasswordAuthentication no\nPermitRootLogin no\n' | sudo tee /etc/ssh/sshd_config.d/10-hardening.conf
sudo sshd -t
sudo systemctl reload ssh
PermitRootLogin の変更前後 実行例
kazulog@sv1:~$ sudo sshd -T | grep -i permitrootlogin
permitrootlogin prohibit-password
kazulog@sv1:~$

no にすると、鍵を持っていても Permission denied となり、ログには ROOT LOGIN REFUSED が記録されます。

なお Ubuntu では root にパスワードが設定されていないため、既定の prohibit-password のままでもパスワードでの root ログインはできません。root アカウントの扱いはUbuntu 26.04 LTS Server のユーザー作成と sudo 権限の設定で解説しています。

ポート番号を変更する

ソケット起動のため、Port を書いて systemctl reload ssh を実行しても待ち受けポートは変わりません。 sshd -T の表示だけが変わり、実際には22番のままです。

Port を変更して reload しただけの場合 実行例
kazulog@sv1:~$ echo 'Port 2222' | sudo tee -a /etc/ssh/sshd_config.d/10-hardening.conf
Port 2222
kazulog@sv1:~$ sudo sshd -t && sudo systemctl reload ssh
kazulog@sv1:~$ sudo sshd -T | grep -i '^port'
port 2222
kazulog@sv1:~$ ss -tlnp | grep -E ':22|:2222'
LISTEN 0      4096         0.0.0.0:22        0.0.0.0:*
LISTEN 0      4096            [::]:22           [::]:*          
kazulog@sv1:~$ ssh -p 2222 taro@localhost whoami
ssh: connect to host localhost port 2222: Connection refused
kazulog@sv1:~$

待ち受けポートは ssh.socket が決めています。sshd_configPortsystemd のジェネレータが読み取って ssh.socket の設定に変換しますsshd-socket-generator)。反映するには daemon-reload でジェネレータを再実行し、ssh.socket を再起動します。

ポート番号の変更を反映するコマンド
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
ポート番号の変更の反映 実行例
kazulog@sv1:~$ sudo systemctl daemon-reload
kazulog@sv1:~$ sudo systemctl restart ssh.socket
kazulog@sv1:~$ ss -tlnp | grep -E ':22 |:2222'
LISTEN 0      4096         0.0.0.0:2222      0.0.0.0:*
LISTEN 0      4096            [::]:2222         [::]:*          
kazulog@sv1:~$ cat /run/systemd/generator/ssh.socket.d/addresses.conf
# Automatically generated by sshd-socket-generator

[Socket]
ListenStream=
ListenStream=0.0.0.0:2222
ListenStream=[::]:2222
kazulog@sv1:~$ ssh -p 2222 taro@localhost whoami
taro

ss の表示が2222番に変わり、ssh -p 2222 で接続できます。元に戻す場合は Port の行を削除して、同じく daemon-reloadrestart を実行します。

ポート番号を元に戻す 実行例
kazulog@sv1:~$ sudo sed -i '/^Port 2222/d' /etc/ssh/sshd_config.d/10-hardening.conf
kazulog@sv1:~$ sudo cat /etc/ssh/sshd_config.d/10-hardening.conf
PasswordAuthentication no
PermitRootLogin no
kazulog@sv1:~$ sudo systemctl daemon-reload && sudo systemctl restart ssh.socket
kazulog@sv1:~$ ss -tlnp | grep -E ':22 |:2222'
LISTEN 0      4096         0.0.0.0:22        0.0.0.0:*
LISTEN 0      4096            [::]:22           [::]:*          
ポート番号を変更すると、変更前のポートへの接続はできなくなります。リモート作業中に変更する場合は、現在の接続を切断せずに別の端末で新しいポートへの接続を確認してから元の接続を閉じてください。ファイアウォール(ufw)を使用している場合は、新しいポートの許可も必要です。

認証ログの確認

接続の成功・失敗は journalctl -u ssh で確認できます。認証方式ごとに次のように記録されます。

ログ意味
Accepted publickey for [NAME]公開鍵認証で接続成功
Accepted password for [NAME]パスワード認証で接続成功
Failed password for [NAME]パスワードが誤っている
Connection closed by authenticating user認証できずに切断された
ROOT LOGIN REFUSEDPermitRootLogin no により root の接続を拒否
認証ログの確認コマンド
sudo journalctl -u ssh --since "10 min ago"

検証環境と実行ログ

本記事の実行例は、CML 上の Ubuntu 26.04 LTS Server(OpenSSH 10.2p1)で採取したものです。各手順の実行ログを以下からダウンロードできます。_console はコンソール(SSH が使えない状態)で採取したもの、_mac はクライアント側で採取したものです。

手順実行ログ
導入前の状態(未導入の確認)log
クライアントからの接続(未導入時)log
openssh-server のインストールlog
インストール直後の設定値log
SSH サーバーの状態確認log
パスワード認証での接続(クライアント側)log
パスワード認証での接続(サーバー側のログ)log
鍵ペアの作成log
公開鍵の配置(ssh-copy-id)log
公開鍵認証での接続log
パスワード認証の無効化log
ドロップインの読み込み順の確認log
パスワード認証の拒否(クライアント側)log
root ログインの禁止log
ポート変更(reload のみ)log
ポート変更(daemon-reload と restart)log
ポート番号を元に戻すlog

参考リンク

Ubuntu Server documentation: OpenSSH server

関連記事

Ubuntu 公式ページ