The easiest way (in terms of not having to re-install grub) is to use a tool such as gparted to resize the original drive using a live cd. Maybe remove the data partitions and resize the root partition if required so that it is smaller than the SSD. Do a direct copy with dd after the resize. This worked well for me although it would be a good idea to backup any important data / settings on the drive.
The other option which I have not personally done is to use rsync or tar to copy the data, then use chroot to install grub to the MBR of the new drive. Have a look at this
The 3rd option (if you are using a debian based system) is to get a list of installed programs with "dpkg --get-selections", do a new install, then use dpkg --set-selections to create the same environment. Lastly copy over the contents of you home folder and any specific configuration files in /etc such as network/interfaces, sources.list etc.
dpkg --get-selections > mypackages.txt
sudo dpkg --set-selections < mypackages.txt
sudo apt-get dselect-upgrade