Accessing computers in a remote location

Solution 1:

There are 3 kinds of technologies for this task. (Within a scope of a single answer, I can only give an overview of them.)

1. Port forwarding

Your home computers have private IPs -- but the router that they are connected to the Internet through likely has a public IP on its external interface (that's true for most home Internet providers). If you find out this address in you router's configuration interface, you can connect to it from the Internet.

Then, it's possible to configure a router to forward all incoming connections to its external interface with a certain protocol and port number to a certain internal IP and port. This feature is typically called "port forwarding", "port mapping" or "virtual server" in router interfaces.

Some routers allow to specify the internal machine by name, but most require to specify its IP address -- so you'd have to also make that machine's IP address "static" in the router's DHCP settings so that it doesn't change and the forwarding rule remains valid.

Then you can connect to the specific port on your specific internal machine from the Internet by connecting to <your router's IP>:<forwarded port>.

For most providers, the router's public IP address is dynamic (may change on each startup and/or from time to time) and Internet providers typically charge extra for a static IP. You can skirt around that by using DDNS (a third-party DNS service with an ability to easily update its records with authentication which your router will do automatically whenever its public IP changes) -- those however also typically come at a cost and your router needs to support the specific DDNS provider to update the record since there are no standards for the update protocol.

2. Virtual Private Networking

The scenario you're describing is what VPN was originally created for (hence the name); being able to provide authenticated Internet access with it that seems to be its primary use case now is but a fortunate side effect.

Upon connecting to a VPN server, a VPN client creates a virtual network adapter at your local machine with an IP from the remote network. Through it, you can access machines on the remote network in the same way as if you physically were on that network. The VPN client encapsulates packets sent to the virtual adapter into a so-called "tunneling protocol" and sends them to the VPN server which unpacks them and sends to the target machines on the remote network -- and vice versa.

This is a very simple technique so there are lots of VPN implementations -- even SSH provides its own, the "SSH tunnel". The ease of setup and use and OS support varies wildly though. Current open standards are listed at the Wikipedia page linked to above and in e.g. https://openwrt.org/docs/guide-user/services/vpn/start

VPN server support in routers is not very common, so you'd probably need to shop for a "VPN router" or install OpenWRT onto yours if it supports the hardware. You can also run a VPN server on one of the internal machines -- then you'd need to port-forward it as per above and keep it powered on whenever you need access which is an inconvenience. In any case, you need to have and know the router's public IP to connect to like above.

3. Remote access through an intermediary

As you can see, the main problem with connecting is to have to have a public IP -- if you don't, there's nowhere to connect to. However, if there's a 3rd-party server with a public IP, both your machines can connect to it and talk with each other through those established connections.

Most online "Remote access" services work like this, and they are virtually always paid due to the maintenance costs for the intermediary servers (they need to support the combined bandwidth of all the forwarded connections). For those few that are free, you'll likely get very poor connectivity due to limited server resources.

Since the intermediary is a general-purpose communication channel, such services typically offer multiple types of connectivity in their clients: remote desktop, file transfer, VPN etc.

The key upside is that you don't need to have a machine with a known public IP. The key downside is the cost, and the fact that there are next to no open standards in real use so your options would be limited to whatever functions and integrations the specific service's client supports.