I'm trying out SSH tunneling between Windows 7 64-bit notebook and an 11.2.0.4 64-bit database on Linux. This seems to work as expected whenever SQL Developer is configured to use the JDBC Thin driver (via Tools -> Preferences -> Database -> Advanced), and also for the Instant Client OCI/Thick driver. When SQL Developer is configured to use "Oracle Home" (i.e. full client) OCI/Thick, on the other hand, it still prompts for the SSH authentication but ends up connecting directly to the remote listener rather than going through the tunnel.
Please note that it isn't truly necessary to tunnel this connection, as the DB listener can be contacted directly... I'm just testing the functionality here. The resulting connection is being validated from a Cygwin bash shell, with no other ssh or database connections established. Here's what a good (tunneled) connection looks like:
$ netstat -an | egrep ':(22|1521)' | grep -v TIME_WAIT
TCP 10.0.12.68:xxxxx 172.31.48.102:22 ESTABLISHED
Here's what it looks like when the non-instant OCI/Thick client is used:
$ netstat -an | egrep ':(22|1521)' | grep -v TIME_WAIT
TCP 10.0.12.68:xxxxx 172.31.225.38:1521 ESTABLISHED
An additional wrinkle is that if I configure the failing item as Instant Client (even though it's really Full), then the connection gets tunneled successfully. Both the Instant and Full clients are 12.1.0.2.0 (I haven't tried any other versions as of yet), and SQL Developer 4.0.3 and 4.1EA1 both exhibit this issue.
I suspect that I'm encountering a bug here, but the documentation doesn't go into a great deal of detail about SSH tunneling so it's difficult to be 100% certain. Can anyone say if this is a known limitation?