systemctl is-active NetworkManager
systemctl is-active systemd-networkd
nmcli dev status 2>/dev/null || true
If NetworkManager is active
Get the connection name for eth0:
nmcli -g NAME,DEVICE con show --active
Set static IP (replace CONN_NAME with the name you got):
sudo nmcli con mod "CONN_NAME" ipv4.addresses 192.168.1.101/24
sudo nmcli con mod "CONN_NAME" ipv4.gateway 192.168.1.1
sudo nmcli con mod "CONN_NAME" ipv4.dns "192.168.1.1 1.1.1.1"
sudo nmcli con mod "CONN_NAME" ipv4.method manual
sudo nmcli con down "CONN_NAME" && sudo nmcli con up "CONN_NAME"
Verify
ip -4 addr show dev eth0
ip route | grep default
You want:
inet 192.168.1.101/24
default via 192.168.1.1 dev eth0 (may or may not still say proto dhcp, but the key is the src becomes .101 and the address is static)
If systemd-networkd is active
Open the file /etc/dhcpcd.conf and place the following lines of code, which configures the connection using the eth0 (ethernet) interface:
In the example above, we have used 192.168.1.X/24 as the static private IP and 192.168.1.1 is the IP of our router (a.k.a. gateway, check it using router -n command).
A good practice to increase security is to change the default ssh port (22) to a different one (higher than 1000, lower than 65535). Open the ssh configuration (file /etc/ssh/sshd_config) and uncomment the line called “Port 22” and change it to