I can think of three mechanisms that could be used to establish an SSH connection when the remote IP address is subject to change.
- Use a dynamic DNS service for the remote site, in combination with a notification script such as net/ddclient.
- Use a multicast vxlan(4) tunnel. This will require intermediate multicast routers.
- Pre-establish a reverse SSH tunnel from the remote site to the client with ssh(1) -R. This will require restarting whenever there is a change in IP address or a change in state on the client system, perhaps through ifstated(8).