You'll need to forward the right port from your router to your Linux machine. As you probably know, Port 22 is the standard port.
However, some ISPs (possibly yours, but I have no facts to support this) will block the port.
Thus, you have two options:
Change the port used by your SSH Daemon to listen for incoming connections on a different and unblocked port.
If that's not possible, map a public port to port 22 on your router.
Thus, all traffic on <public port of your choosing> is forward to port 22 on your Linux machine. This has the advantage of not changing your Linux machine, and all you need to do is specify the new port when you're connecting away from home.
Your modem may refer to 'port forwarding' as 'firewall', 'address translation' or 'virtual servers', or similar.
You can use the ShieldsUp! feature at Gibson Research Center to perform a portscan of 22, and see if you've opened it. (Of course, if you're using a different public port, then you would scan that port).
Finally, as others have suggested, I recommend DynDNS to provide you with a non-changing name to address your computer on the Internet.
2i'd also suggest setting up some protection, like fail2ban, while at your at it. – Journeyman Geek – 2010-04-07T09:35:29.633