Back to product page


General information

The wodSSHTunnel component is a server component that will add secure tunneling capabilities to your applications and is based on the SSH protocol. According to your rules and definitions, it will accept local connections, encrypt and forward data to the SSH server where it will then be decrypted and sent to the destination host. An SSH server is required for this component to work - encryption will take place between the local computer (running wodSSHTunnel) and the SSH server of your choice.

It will work on both ends - it can accept local connections and forward them to the server or it can facilitate connections to local services when notification of a 'remote port forwarding' request is received from an SSH server. wodSSHTunnel also implements a SOCKS4(a)/SOCKS5 proxy - so you can leave it up to each application to decide its destination dynamically.

How does it affect my network connections?

Instead of using direct connections to the server, (perhaps through the Internet which is not secure),

you would connect to your SSH server using an encrypted connection and the SSH server would connect to the services that you require. Usually, these services will reside on the same machine as the SSH server or will be inside a protected network.

Not only will it secure your connections, it will also allow you to create a VPN to your services.

How does it work?

You set up any number of Channels - these are objects that will keep information about a specific port forwarding request. For example, you can use wodSSHTunnel to create a Channel that will listen on local port 80 and forward all requests to the SSH server on its port 80. After you start that channel, you can connect to http://localhost using your web browser and you will see the web page served up by the web server that is running on the same computer as the SSH server. Neat, isn't it?

After a Channel is created and started, it will accept Users. Each channel stores a collection of users that are connected to it. When a new User tries to connect to the channel, you will receive an event in which you can decide whether to allow or deny the user permission to use the secure channel. If you allow a user to connect and use a channel, everything else is handled by wodSSHTunnel.

Where would you use it?

If you are looking for a tunneling component, you probably already have an idea where you would use it. But if you don't have any idea, here is a suggestion: you can encrypt your email transfers with a wodSSHTunnel. You do this by setting up a channel to listen on port 110 (for the POP3 protocol) and point it to the server on port 110. Once this is in place, you can use your email client to connect to localhost on port 110 and all of your email transfers will be encrypted. This is a great tool when you are reading your email from public computers or Internet cafes.

You can also encrypt the SMTP protocol this way. Not only is it secure but you can also bypass relay checking on your SMTP server. When you send email through the tunnel in this way, the SMTP server sees mail as coming from localhost (on its side!) and will allow relays. This is not a security flaw, because you have already authenticated with the server using the SSH protocol.

Component models

wodSSHTunnel comes as 3 standalone components - each of them is exactly the same as the others but implemented in a different technology. You can decide for yourself which one to use: the in-process COM object (ActiveX DLL) which has the fastest interface, the ActiveX control (OCX) that supports drag & drop functionality in some containers (such as VB) or the ActiveX EXE which is an out-of-process COM object. The out-of-process COM object (ActiveX EXE) should be used when your program blocks the main thread when wodSSHTunnel is running. Because it lives in a separate address space, your application will be able to tunnel its own connections without being blocked by other activity in your process.

Programming considerations

wodSSHTunnel comes in two flavors: The first is as a COM object (in-process ActiveX DLL or out-of-process ActiveX EXE) which in VB you declare with "Dim WithEvents Tunnel1 as wodTunnel". You can initialize and destroy the COM objects on the fly and use as many instances of them as you want. The second flavour is the ActiveX control (OCX), which you can drag & drop onto your forms from the component toolbox. You can also set up basic properties and even define channels for the ActiveX control using its property pages.

As is usual with WeOnlyDo! products, wodSSHTunnel is a royalty free component. You have the right to distribute its binaries (wodTunnel.dll, wodTunnel.exe, wodTunnel.ocx, wodKeys.dll) with your application, free of charge. You only need to purchase separate licenses for each developer on your project. Under no circumstances are you entitled to sell, give away or change the component's source code - this still belongs to WeOnlyDo! Inc.

wodSSHTunnel can be used in many environments, wherever it makes sense to run server-type applications. However, if you try to use it from within ASP it probably won't work.

Note: in the SSH1 protocol you cannot use remote port forwarding due to specific limitations of this protocol.