You could use ssh-agent on the server to load the private key and enter the passphrase once. This will keep the key loaded until ssh-agent is killed, when rebooting for example.
You could also use SSH agent forwarding as @kostix suggests.
Also, does the shell script need to be run unattended? If not, I use and love fabric for tasks like this as it will forward any input prompts from the remote server to your local machine, in addition to all other kinds of awesomeness when automating tasks on remote servers.