Do we even need to expose the libssh2 callback (i.e. `libssh2_userauth_publickey`)? Why not just ask for the keyfile etc. and pass it to `libssh2_userauth_publickey_fromfile`?