The US Navy and NASA's Jet Propulsion Laboratory are developing a engine that can efficiently generate energy from heat in the water. This engine could propel a ship indefinitely:
SOLO-TREC is outfitted with a series of tubes full of waxy phase-change materials. As the float encounters warm temperatures near the ocean's surface, the materials expand; when it dives and the waters grow cooler, the materials contract. The expansion and contraction pressurizes oil, which drives a hydraulic motor. The motor generates electricity and recharges the batteries, which power a pump. The pump can change the float's buoyancy, allowing it to move up and down the water column.
"In theory what you have now is unlimited endurance for something that has this type of engine," said Thomas Swean Jr., team leader for ocean engineering and marine systems at the Office of Naval Research, which funded the project. "Other things can break, but as far as the energy source, it will only stop working if the ocean ran out of energy, which is unlikely to happen ... One of the Navy's goals is to have a persistent presence in the world's oceans. This is the type of technology that leads you to that."
http://www.popsci.com/technology/article/2010-04/submarine-runs-eternally-thermal-power-ocean-currents | Photo: NASA/JPL/U.S. Navy/Scripps Institution of Oceanography
The scheme in this article is workable, but I would bet that using it to push a large ship would require a large number of floats. I doubt it would be practical for most commercial shipping.