ok. I've fixed it. the main issue is that if you connect through a 3G USB dongle you don't have a public IP address but a network one. so you need a reverse connection. to do that, just act that way:
suppose you are trying to connect via a windows machine with a fixed ip and with a port forwarding in the router for port 22, with user USER and password psw
on raspberry machine, execute this command after the 3G connection:
ssh -R yyyy:localhost:22 USER@xxx.xxx.xxx.xxx
where yyyy is a free port, xxx.xxx.xxx.xxx the fixed ip of the windows machine. once connected, authenticate with the windows USER psw. use sshpass -R yyyy:localhost:22 -p 'psw' USER@xxx.xxx.xxx.xxx
install sshpass with apt-get install sshpass
replace psw with the windows USER password
you can use a ssh server (a free one such bitvise ssh server) running on the windows machine to get the connection.
on the windows machine, using a ssh client issue the command
ssh localhost -p yyyy where yyyy is the same port of the raspberry connection. you will get reverse access to the raspberry pi machine connected to the internet through a 3G USB dongle..
that's all. works perfectly.