I am not big fan of giving out interactive ssh access to a 3rd parties. Even with a restricted account.
What you can do is to use ssh's "ForceCommand" to make it more secure. But that moves the actually deploy logic from the CI to the server.
It basically turns the ssh just into a fancy webhook with ssh auth.
https://github.com/tcurdt/nixcfg/blob/main/modules/hook-ssh.nix