I use two approaches for deployment, depending on how critical (or complex) the site is.
Mode 1: rsync/ssh. It’s fast, and makes it easy to mirror local directories to the server. The only disadvantage is that it’s not atomic, which can leave your site out of sync for a few seconds. I use this method for my personal blogs, as it’s quick and easy.
Mode 2: ssh/svn + scripts. Not as fast, but allows you to turn off your running site (I replace mine with a static “hold-your-clicks” page), allows you to run db updates, and works from your subversion branches. I use this method for busy sites, or sites that often require database upgrades.
Security note: ssh is probably the best secured path to your server, just be sure to use strong passwords when generating your keys, and use sudo on the webserver instead of shared root access (which allows some amount of auditing).