ssh.service startup failure; port 22 already in use

Brand new ubuntu installation:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal

ssh.service fails to startup due to port 22 already in use:

$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2021-02-04 14:10:27 CST; 11min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 2041 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Process: 2042 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255/EXCEPTION)
   Main PID: 2042 (code=exited, status=255/EXCEPTION)

Feb 04 14:10:27 ubu20a systemd[1]: Starting OpenBSD Secure Shell server...
Feb 04 14:10:27 ubu20a sshd[2042]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Feb 04 14:10:27 ubu20a sshd[2042]: error: Bind to port 22 on :: failed: Address already in use.
Feb 04 14:10:27 ubu20a sshd[2042]: fatal: Cannot bind any address.
Feb 04 14:10:27 ubu20a systemd[1]: ssh.service: Main process exited, code=exited, status=255/EXCEPTION
Feb 04 14:10:27 ubu20a systemd[1]: ssh.service: Failed with result 'exit-code'.
Feb 04 14:10:27 ubu20a systemd[1]: Failed to start OpenBSD Secure Shell server.

Only thing I see listening on port 22 is 1/init:

$ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      101        34051      556/systemd-resolve 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      0          37066      745/cupsd           
tcp6       0      0 :::22                   :::*                    LISTEN      0          34718      1/init              
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           115        37068      743/avahi-daemon: r 
udp        0      0 0.0.0.0:52172           0.0.0.0:*                           115        37070      743/avahi-daemon: r 
udp        0      0 127.0.0.53:53           0.0.0.0:*                           101        34047      556/systemd-resolve 
udp        0      0 0.0.0.0:631             0.0.0.0:*                           0          39715      822/cups-browsed    
udp6       0      0 :::5353                 :::*                                115        37069      743/avahi-daemon: r 
udp6       0      0 :::39012                :::*                                115        37071      743/avahi-daemon: r 

While I can get ssh.service to startup on an alternate port (eg, port 2020) I'd like to understand, and fix (if possible), this current issue with port 22.

NOTES:

  • linux sysadmin is not my strong point so if I'm missing something stupidly obvious ... go ahead and shoot the messenger
  • if the answer is RTFM then a link to which FMTR would be appreciated
  • I looked through the first dozen or so suggested 'duplicate' questions but didn't find anything applicable to this issue

Solution 1:

A bit long for a comment ...

I took @steeldriver's suggestion and ran the suggested systemctl call:

$ systemctl -all list-sockets
LISTEN                       UNITS                           ACTIVATES               
... snip ...
/run/udev/control            systemd-udevd-control.socket    systemd-udevd.service   
/run/uuidd/request           uuidd.socket                    uuidd.service           
[::]:22                      tinysshd.socket                 [email protected]      
audit 1                      systemd-journald-audit.socket   systemd-journald.service
kobject-uevent 1             systemd-udevd-kernel.socket     systemd-udevd.service 

Of interest is the 3rd line up from the bottom ... something called tinysshd listening on port 22.

I couldn't find any explanation for what tinysshd does (ie, doesn't appear to be a system required service) so I removed tinysshd (sudo apt remove tinysshd) and was able to successfully start the ssh service:

$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-02-04 15:14:34 CST; 3s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 3887 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 3888 (sshd)
      Tasks: 1 (limit: 7032)
     Memory: 1.3M
     CGroup: /system.slice/ssh.service
             └─3888 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Feb 04 15:14:34 ubu20a systemd[1]: Starting OpenBSD Secure Shell server...
Feb 04 15:14:34 ubu20a sshd[3888]: Server listening on 0.0.0.0 port 22.
Feb 04 15:14:34 ubu20a sshd[3888]: Server listening on :: port 22.
Feb 04 15:14:34 ubu20a systemd[1]: Started OpenBSD Secure Shell server.

I can also see sshd listening on port 22:

$ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
...snip ...
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          66119      3888/sshd: /usr/sbi 
tcp6       0      0 :::22                   :::*                    LISTEN      0          66121      3888/sshd: /usr/sbi 
... snip ...