How can you secure data between sites?

You have a small remote office with a limited number of users that needs to have network access to the corporate headquarters location. The remote site has an Internet connection, but you don’t want to connect your sites using an insecure public network. What’s the best technology for securing network connections between locations, even over public network links?