Get rid of the check-flags
INPUT and OUTPUT rules and see if it helps. If it does, you've isolated the problem to that chain. If it doesn't help, proceed to modify the allow-ssh-traffic-in
chain to something simpler and known to work, like:
$IPTABLES -N allow-ssh-traffic-in
$IPTABLES -F allow-ssh-traffic-in
$IPTABLES -A allow-ssh-traffic-in -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A allow-ssh-traffic-in -p TCP --dport 22 -m state --state NEW -j ACCEPT
Then see if that helps. If it does, you've isolated the problem to that chain.
This post makes two assumptions: 1) These are the rules on the server, not the client. 2) You've tested that setting your policies to ACCEPT and flushing out all the rules makes SSH work fine - which confirms that you aren't on a wild goose chase with iptables.