简体   繁体   中英

How to create SSH tunnel using PuTTY in Windows?

I need to create SSH tunnel with PuTTY in Windows, that would do the same as this command in Linux:

ssh -fN -L 2000:SomeIp:2000 myusername@myLinuxBox

I tried many options in PuTTY, including setting source port in GUI to "2000" and destination to "SomeIp:2000". Destination is set to local (as the -L switch suggests).

I successfully login to my SSH box but port forward is not made.

Is this even possible in Windows, so that all the connections made by programs that use this port (2000) will go through this tunnel?

With the PuTTY suite, you can set up a tunnel either using the PuTTY itself (GUI) or using the command-line tool plink.exe .


With the plink.exe , you use the same arguments as with the OpenSSH ssh , except for the -f , which does not have an equivalent in Windows.

plink.exe -N -L 2000:SomeIp:2000 myusername@myLinuxBox

Reference: Using the command-line connection tool Plink


With the PuTTY, the -L 2000:SomeIp:2000 translates to:

PuTTY 隧道设置

So it's actually, what you claim to have tried. If you have any problems, use the PuTTY event log to investigate:

PuTTY 事件日志

The -N translates to the option "Don't start a shell or command at all" .

PuTTY 选项根本不启动 shell 或命令

But it probably does not make sense with a GUI client to enable it, as you get a window anyway, you just cannot do anything with it. See also the PuTTY wish no-terminal-window .


If you are going to use the tunnel to connect with PuTTY to another server, you can actually set up the tunnel as a part of the session settings with use of plink as a proxy, see: PuTTY configuration equivalent to OpenSSH ProxyCommand .

You probably want to use plink.exe instead of the GUI client. The command line syntax is compatible iirc.

Or you can wade through the putty GUI, which also allows this. See Connection > SSH > Tunnels on the left side with the option tree.

在此处输入图片说明

The answers above mention two different ways of resolving the problem:

  • using plink
  • using putty GUI

I don't have plink and I can't download the plink.exe file (it is a closely monitored restricted environment) so used a different way to script the solution with a one-line script:

start putty -ssh myusername@myLinuxBox -pw my_pw -L 2000:localhost:2000

Store this in a batch file (file extension ".bat", eg "tunnel.bat"). So every time you double-click on this file the command is run and putty creates the ssh tunnel. If you want more tunnels just repeat this part

-L 2000:localhost:2000

by changing the ports accordingly.

"Source" port is a port number on the same machine from which you are running putty (eg. open this in your browser: 127.0.0.1:source). "Destination" is your remote port that you want to connect to from your local machine. It started to work after I realized this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM