If you have an error with ssh client or server itself you should try with followings:
Firstly, you should set extra verbose messages on ssh client outputs with
ssh -vvv user@host
There are quite usefullinformations in verbose output mode.
Secondly, you should take a look at ssh server logs or syslog records.
If you have a bit strange problem, you have to start another instance of ssh server with debugging enabled on unused port like that:
/usr/sbin/sshd -d -p 5656
and try to connect this instance with:
ssh -vvv -p 5656 user@host
Now you can see both of the client and server side messages. Ssh prints lots of useful information in debugging mode. If you want even more debuggin messages at server side, add another
d flags and increase verbosity like that:
/usr/sbin/sshd -ddd -p 5656