How to connect two Arduino without shields?
For long distance wired communication, look at RS-485.


  Since it uses a differential balanced line over twisted pair (like
  RS-422), it can span relatively large distances (up to 4,000 feet
  (1,200 m)). A rule of thumb is that the speed in bit/s multiplied by
  the length in meters should not exceed 108. Thus a 50 meter cable
  should not signal faster than 2 Mbit/s


You can use the MAX485 chip. It's pretty easy to work with but there's a good library as well:

https://github.com/Protoneer/RS485-Arduino-Library