As Chris Johnsen points out, Bazaar can upload the repository data to a server using different protocols, SFTP among them.
Actually, the way this works is this: You create a repository/branch on your local machine and user Bazaar to track all changes. Bazaar stores all its information in a directory named ".bzr" in the root directory for that branch. You must upload the repository/branch to your server using your SSH access. Then, any latter changes commited to the branch are automatically uploaded to the server.
To do this, you must follow these steps:
In the directory where the files whose changes you want to track, create a new branch.
Add the files you want to track to current branch, so that they are "version-controlled" by Bazaar.
bzr add file1 file2 directory1 directory2 ...
Make your first commit to the branch. This first commit is required before you can upload the branch to your server. You should read the documentation or use Bazaar's help for learning how to use the "commit" command (and how to enter commit messages).
Upload the branch to your server using your SSH access. Bazaar will automatically prompt for your password. Alternatively, you could set up a public RSA key to avoid the need of entering your password every time.
bzr push sftp://user@domain:port/branch_location_on_server
You can omit the port if the SSH server is listenning on port 21 (which is the default). If you want the branch to be locate in your home directory, you should specify the *branch_location_on_server* starting with "~/".
Any latter commits you do will be automatically uploaded to that location on the server.
In addition, you can also do "commit"s when your machine is not connected to the server by passing the "--local" option to the "commit" command, or by unbinding and binding the branch (bzr unbind/*bzr bind*)
If you want to download that branch, you can do a "checkout":
bzr co sftp://user@domain:port/branch_location_on_server