I recently came across a piece of software called "Fabric". It has been made in python and its purpose is to help simplifying the process of deploying software to remote machines.
The really cool thing I like about it is that it's much faster than, say, an ant script because it actually reuses the SSH connections it opens. This means that, if you copy a file to a remote host (using the 'put' operation), do some local copying, and after that perform a remote command (like starting a server, for instance), this latter operation will not need to open another SSH connection to run the command.
I managed to cut by a factor of 5 the deployment speed of some java services running on jboss just by replacing ant's sshexec by fabric's 'put' method and its siblings :)
But there's a lot more to it: It allows you to configure multiple target environments and hosts (think about deployment to multiple nodes of equal functionality), perform remote commands with 'sudo' and, since the configuration file is basically a python script, you can use all the pythonic sugar of your liking :D
More information about Fabric can be found here. You can get the latest (stable) version in their github page, and here is a reference of the available operations.
UPDATE: I didn't notice, but someone posted an article on YCombinator news about exactly the same subject before I did. I really should read the list before posting :)