I need a solution that will work without jailbreaking, but answers that include that can help others are welcome but just might not be selected as the answer.

On Linux and on OSX, I use ssh on the command-line to open ssh tunnels so I can run client-server applications securely.

I need to do the equivalent on ios (run some kind of tunnel in the background, while I run a client application through that tunnel).

What tools or options exist and listing supported iOS versions would be even more helpful if you can provide that level of detail.

How can I set up a ssh tunneling service on iOS?

5 Answers 5


iSSH supported opening tunnels. For example, I can set a tunnel on local port 4444 that points to an IP address and port 80. Opening localhost:4444 in Safari then loads that website through the tunnel. iSSH also has good support for saved configurations and public key authentication.

Under the App Store rules, iSSH is only allowed to keep the connection open for up to 10 minutes in the background, so after 9 minutes or so I'll get a notification and the tunnel will be closed if I don't switch back to iSSH quickly enough.

As of 2015, iSSH isn't available anymore. The same functionality likely exists in other iOS SSH clients, but I haven't tried any myself.

  • 1
    ty for the detailed answer! Maybe it'll take strong competition from other OSes to drive Apple to lift these types of silly restrictions in the future...
    – kfmfe04
    Oct 21, 2012 at 23:59
  • 1
    I doubt you'll see this restriction go away any time soon. The biggest reason for its existence is battery life. Minimal background tasks means users can safely go about their business without worrying about other apps draining their battery. On a device that effectively has only one program running at a time, it makes a fair bit of sense really. The catch is that it's optimizing the behaviour for the users, not making developer's lives easier.
    – robmathers
    Oct 22, 2012 at 0:27
  • Can't find iSSH on App Store anymore...
    – wdg
    Dec 25, 2014 at 16:12
  • is there anywhere I can find iSSH app ? Any links? Nov 17, 2015 at 13:47
  • It does seem to be dead now and the last version I had had some issues. I would look elsewhere but can't recommend anything specific.
    – gabedwrds
    Nov 18, 2015 at 0:05

If you are looking for an application to setup local port forwarding like:

ssh -f -L 3000:talk.google.com:5222 home -N

You could check SSHTunnel, it allows you to easily manage and precisely control your ssh tunnels. Can create and share SOCKS5 proxy (aka Dynamic Port Forwarding) or setup a Local Port Forwarding.

Also, you can manually specify the local port to bind, configure connection timeout, see logs and statistics etc.

Port forwarding application for iOS

  • 1
    Unfortunately this app is not being actively maintained. Also no longer it does support running in Background which is pretty bad and makes it almost unusable especially with the very bad UI/UX of the internal browser
    – Badr
    Feb 23, 2022 at 11:49
  • Please solve these problems :)
    – Badr
    Feb 23, 2022 at 11:52

vSSH supports tunneling. You can setup tunneling in the "Port forwarding" section of the connection settings. Local, remote and dynamic (SOCKS proxy) forwarding are supported.

You are able to use tunneling even without opening SSH session (shell permissions are not necessary for ssh user in this case).

Due to iOS limitation the app can work in background only for 10 minutes (iOS 5,6) or 3 minutes (iOS 7). vSSH reminds you about this timeout through Notifications.

  • Welcome to Ask Different! Please read the help center regarding self-promotion and include a disclaimer if you are the author of the product in your answer.
    – grg
    Apr 24, 2014 at 14:46

This isn't possible under the current iOS App Store rules (and this is unlikely to change in the foreseeable future). Apps are very limited in what they can do in the background, and keeping the sort of persistent connection that an SSH tunnel requires wouldn't be permitted.

Some apps (such as VNC clients) have built-in SSH tunnelling capability to get around this, but if the apps you're using don't include it, the only option (short of jailbreaking) is to use the built-in iOS VPN capability. It doesn't support SSH, but it does support L2TP/IPSec, PPTP, and some other variants.

  • 1
    Forgot to mention, I am not looking to sell my app for the public (on the App Store) - this is an in-house app for personal use. If it really turns out that this isn't possible under ios, I will prolly switch to Android (pretty sure it's possible there, but I will have to confirm) - I tend to be platform agnostic...
    – kfmfe04
    Oct 21, 2012 at 22:52
  • 1
    Well, even though your app may not be subject to the App Store rules, any third party app from the store will be. Which means unless you jailbreak, you can't do this using a third party app. You could of course use an SSH library in your app to include SSH functionality directly, but how do to that is a programming question, more appropriate for StackOverflow.
    – robmathers
    Oct 21, 2012 at 22:58
  • +1 for that alternative (ty - I will consider it before moving to Android)... ...I'm beginning to see why some developers don't like developing in this kind of environment. Also thanks for the VPN hint - setting up a VPN server on Linux may be less work than trying to get a ssh tunnel in ios.
    – kfmfe04
    Oct 21, 2012 at 23:10

I have it working for a jabber client (sort of) with vssh app to an Ubuntu server. Once the SSH session is open I launch top or glances to keep the session active, but it will seem to go dormant after 3 mins. After that I need to toggle over to the vssh app then back to the jabber client and it will work for another 3 mins. Not the best solution for chatting but it will work in a pinch.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .