I followed the answers to this question today (2023-02-14), and still was getting a SSH service being spawned on ipv6, even though I had set AcceptFamily inet
and ListenAddress 10.0.2.15:2022
configured on my /etc/ssh/sshd_config
file on Ubuntu 22.10, then configured listen.conf
with the different port.
Well, I traced this bug report: https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1993478/comments/14 which let me to the script on https://launchpadlibrarian.net/630622842/openssh_9.0p1-1ubuntu8.debdiff
which hinted the solution for me. So, if you need a basic configuration of a single ipv4 address listening on a custom port (e.g. 10.0.2.15
on 22022
), do this:
- Erase all
Port
and ListenAddress
information on /etc/ssh/sshd_config
- Create the directory
/etc/systemd/system/ssh.socket.d
(i.e. sudo mkdir -p /etc/systemd/system/ssh.socket.d
)
- Put this content to the
/etc/systemd/system/ssh.socket.d/addresses.conf
file:
[Socket]
ListenStream=
ListenStream=10.0.2.15:2022
HINT: Do not put Accept=yes
on this configuration, hoping for the OS to spawn a ssh service on connection demand. On a new Ubuntu 22.10 installation and configuration as in this answer, this made the ssh service to listen on 0.0.0.0
port 22
, and even worse not starting the service on boot.
Then issue these commands:
systemctl daemon-reload
systemctl disable ssh.socket
systemctl stop ssh.socket
systemctl enable ssh.service
systemctl start ssh.service