I have explained on a previous article how to restrict public IP addresses on redhat 7 systems through /etc/hosts.allow and /etc/hosts.deny files. As RedHat explains this is not an option anymore on RHEL8 and this should be enforced by the firewalld package.
You can find the detailed article here
However you can implement the same behavior through sshd configuration with AllowUsers setting.
Edit your /etc/ssh/sshd_config file and add a rule. My created one allows all users to login but only from the specified public IP addresses. If I try to login from another location I will get rejected.
AllowUsers *@public_IP
A more detailed explanation on how to use AllowUsers to block users or groups can be found here.
Testing the behavior with a non allowed IP address will reject me although the key is correct.
The login attempt is logged on the system and can be found with the below command:
ausearch --message USER_LOGIN --success no --interpret
You can also integrate fail2ban package in order to block more than X login attempts from malicious users.