ssh using key pairs is secure - unless you think someone will guess your private key, or break into your server and steal the file...
VPN, using usernames & passwords, is less secure.
Having said that, I do not run ssh on port 22. Even though it's not supposed to be a 'fix', moving ssh to another port has eliminated ssh attacks on my servers.
I use the 'affa --send-key ...' command to setup the keys, then disable password login to ssh in server-manager