VNC proxy-jump, possibly with ssh

I use VNC a lot on a specific machine. But it's on a separate network that I can't reach directly.

+----------------+     +----------------+
| Linux          |     | Windows        |        +---------------+
| VNC client     |     | OpenSSH Server |        | Linux         |
|   192.168.1.100-------192.168.1.22    |        | VNC server    |
|                |     |      10.10.1.33----------10.10.1.44     |
+----------------+     |                |        |               |
                       +----------------+        +---------------+

Currently, I RDP to a windows machine which bridges the networks. From the rdp desktop, I launch a vnc client to the vnc-server. The windows machine in the middle runs OpenSSH. Is there a way for me to use that so I can connect to the vnc-server directly?

My solutions for ssh and scp are currently:

ssh -J 192.168.1.22 10.10.1.44
scp -o=ProxyJump=192.163.1.22 10.10.1.44:file .

I'd prefer to leave the windows machine alone if possible and do this from the client side. That's because I actually have lots of these Windows bridges, each with an independent 10.10.1.x network with lots of VNC servers on each network. I'm using vinagre as a vnc client and x11vnc as the vnc server.


If you already have a SSH connection, you just need to add a port forwarding:

ssh -J 192.168.1.22 -L 5990:127.0.0.1:5900 10.10.1.44

In -L 5990:127.0.0.1:5900 the 5990is an arbitrary port number for your local machine. You connect your VNC client to this port. The 127.0.0.1:5900 is the destination address and port. This assumes your VNC server runs on port 5900. The destination address 127.0.0.1 is from the point of view of the server, you can also replace it with 10.10.1.44.