Many machines don't have direct access to the Internet. They're behind a network appliance that performs network address translation (NAT): the machine has an IP address that's only valid on the internal network. When the machine makes a connection to an outside server, the NAT appliance relays the connection, so that the server sees a connection coming from the NAT appliance.
This makes it impossible to make incoming connections to the internal machine, since connections from the outside can only reach the NAT appliance. Unless the NAT appliance has been configured to relay incoming connections, which is rarely the case (which of the many internal machines would it relay each connection to?), incoming connections are not possible.
If your local machine is behind a NAT, you can only make outgoing connections. If you want to copy a file, open another terminal locally, and run
sshfs to transfer files. To speed up the establishment of subsequent connections, you can configure SSH to piggyback on the existing secure channel.
If you need that often, you can build a reverse SSH tunnel. It's a trade-off: longer setup, but a convenience gain once it's in set up.