enp0s31f6 shows the flag UP but not RUNNING: this typically means it does not have a valid link at the moment.
On the other hand, wlp0s20f3 has both UP and RUNNING flags present. The name prefix wl indicates this is a wireless interface, which makes sense as you said this is a laptop. An en prefix would indicate a wired interface.
So, the IP address of the wlp0s20f3 interface (i.e. 192.168.0.23) would be the one to use for inbound SSH connections from other physical hosts.
The interfaces docker0, virbr0 and virbr1 are for facilitating networking between Docker containers and/or virtual machines running on this system: depending on other settings, they might allow containers/VMs communicate only with the host OS, or they might allow NAT-based access to the world outside this physical host. To understand their exact purpose, it might be necessary to study the iptables NAT and forward filtering rules (i.e. sudo iptables -Lvn -t NAT and sudo iptables -Lvn).
If your laptop had the appropriate data records embedded in its firmware, its integrated wired network interface should get identified as eno1 and the wireless one as wlo1. But apparently your laptop's firmware does not include those records. If you wish, you could change the interface names by creating two simple /etc/systemd/network/*.link files.
First, you would need to use e.g. sudo udevadm info -q all -p /sys/class/net/enp0s31f6 | grep -e ID_NET_NAME -e ID_PATH to identify the hardware path and the autodetected name candidates for your network interface. The output might look something like this:
# udevadm info -q all -p /sys/class/net/enp0s31f6 | grep -e ID_NET_NAME -e ID_PATH
E: ID_NET_NAME_MAC=enx0123456789ab
E: ID_NET_NAME_ONBOARD=eno1
E: ID_NET_NAME_PATH=enp0s31f6
E: ID_PATH=pci-0000:00:1f.6
E: ID_PATH_TAG=pci-0000_00_1f_6
E: ID_NET_NAME=enp0s31f6
If the ID_NET_NAME_ONBOARD line does not appear, that confirms your system firmware does not properly identify the network interface as an onboard one. You might wish to fix this by renaming the interfaces to use the names they would have ideally been assigned to anyway. To rename this interface, you would note the ID_PATH= line, and use it to write a configuration file as e.g /etc/systemd/network/70-eno1.link with the following contents:
[Match]
Path=pci-0000:00:1f.6
[Link]
Name=eno1 #or whatever you want
and likewise for the wireless interface.
Instead of setting an explicit Name=, you can also use a NamePolicy= setting to select any of the pre-generated ID_NET_NAME_* candidates, or to set an order of preference for selecting a pre-generated name. See man 5 systemd.link for more details.
After creating these files, you should update your initramfs (sudo update-inintramfs -u) and reboot. After rebooting, you should find your interfaces with the names of your choice.
Note that the enp0s31f6 is a name that is based on the PCI device path: it indicates it refers to PCI device 00:1f.6 as 31 = 0x1f. Likewise, wlp0s20f3 would be PCI device 00:14.3 (20 = 0x14).