I have a SSH server hosted on my desktop in BackTrack 5 r3 64-bit. I m able to access the ssh sever from the LAN using my laptop but when I try to access my ssh server from my office using the public IP it doesn't work. The connection just pauses with no response.

Command: ssh -v xxx.xxx.xxx.xxx -p22

What all I have tried so far:
1. Port forwarding in the router for Port 22.
2. Allowed port 22 in iptables.
3. Nmap result on private ip shows port 22 open and for public ip it says port 22 filtered.
4. ssh-keygen to generate the keys. I had also used sshd-generate before but now when I try to do sshd-generate I get "sshd-generate: command not found"

If I stop the sshd and open netcat using "netcat -lvp 22" then using "http://www.ping.eu/port-chk/" to check the status of port 22 I get the incoming packet detail in netcat output. But when i start sshd on port 22 and try to login using public ip from my office computer I cannot connect to my ssh server computer.
Keeping the sshd service running and then trying to check for port 22 status using the above mentioned website I get port open. But still I cannot connect to the ssh sever using my public IP.