Skip to content
Switch branches/tags

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time
  • If you get the error about, You have to build a new ssh binary or just simply remove the ssh executable to avoid the error. It will automatically detect it and will connect with SSH instead of OSSH.


Psiphon is a circumvention tool from Psiphon Inc. that utilizes VPN, SSH and HTTP Proxy technology to provide you with uncensored access to Internet content. Your Psiphon client will automatically learn about new access points to maximize your chances of bypassing censorship.

Psiphon is designed to provide you with open access to online content. Psiphon does not increase your online privacy, and should not be considered or used as an online security tool. This is a multifunctional modified linux version of the original tool by Psiphon Inc.

Forked the pyclient from

Getting Started (Linux and Mac OS X 10.11 or older) (For Mac OS X (After 10.12) and Windows, instructions are at the end of this README)

$ git clone <repo url>
$ cd psiphon


Things needed to get it working.

  • python 2.7 and above
  • python-pip
$ sudo apt-get install python-pip


A step by step guide :

  • Creating ssh binary

    However an ssh binary is provided for ubuntu 14.04, it is highly recommended to compile your ssh binary to remove compatibility issues.

    psiphon$ cd openssh-5.9p1
    openssh-5.9p1$ ./configure

    Install the required dependencies if error occurs. Use make command after successful verification of dependencies.

    openssh-5.9p1$ make

    A ssh binary will be created on successful completion of make command. After removing existing binary file, copy the new binary to main psiphon folder.

    openssh-5.9p1$ cd ..
    psiphon$ rm ssh
    psiphon$ cp openssh-5.9p1/ssh .

    Your binary is ready for running.

  • Updating server list

    However a server list has been provided, it is highly recommended to update servers from time to time.

    psiphon$ python -u

    It requires Internet connection. If error occurs in the script, Use pip to install required packages.


    If error is "ImportError: No module named wget", Run the following command:

    $ sudo pip install wget


    Upon successful completion, Use the following command to list all the servers.

    For obfuscated ssh (OSSH) servers only :

    psiphon$ python -s 

    For All servers including non obfuscated ssh ones :

    psiphon$ python -s -a 

    For further filtering region wise, add -r filter to the above commands. Ex, For India Servers (only ossh ones) :

    psiphon$ python -s -r IN
  • Final Step

    Use the Following command to run psiphon:

    psiphon$ python

    Connecting region wise (Lets say India):

    psiphon$ python -r IN

    These commands will establish a socks proxy on default port 1080. To change the default port use -p flag:

    psiphon$ python -r IN -p 1234

    To see all India servers add -s flag to the above commands:

    psiphon$ python -r IN -p 1234 -s

    To Connect to specific ip server with a serial number 2 from the above result:

    psiphon$ python -r IN -p 1234 -i 2

    In case of error: example- "ImportError: No module named pexpect"

    $ sudo pip install pexpect

    Make alias for convenience:

    $ echo 'alias psiphon="cd ~/psiphon && python"' >> ~/.bashrc

    Now on a new terminal:

    $ psiphon -h
    $ psiphon

    Psiphon should now be running successfully on your machine.


psiphon$ python -h
Usage: [options]

  -h, --help            show this help message and exit
  -e, --expose          Expose SOCKS proxy to the network
  -t, --test-servers    Test all servers
  -r REGION, --reg=REGION
  -s, --show            Show available servers
  -p PORT, --port=PORT  Local Port
  -u, --update          Update Servers
  -i SID, --sid=SID     Server number
  -a, --all             Include Non OSSH servers also

Testing servers

All servers:

psiphon$ python -t

Region Specific:

psiphon$ python -t -r IN

Exposing Port

This can be used to share socks proxy created over a specific port.

Default (port 1080):

psiphon$ python -e

Specific (Ex- port 1234):

psiphon$ python -e -p 1234

For Mac OS X (After 10.12) and Windows (Docker Instructions)

You can use the docker image of the psiphon client and run psiphon on any OS.

First Time:

Get Docker
docker pull thepsiphonguys/psiphon

docker run -d -it -p --name psiphon thepsiphonguys/psiphon

Subsequent runs:

docker start psiphon

docker exec -it psiphon bash

After that you will get access to the shell and can use all the psiphon commands. This method forwards all the docker's traffic on port 1080 (psiphon's default port) to the machine's 1080 port.

To stop psiphon

docker stop psiphon

PS: remember to use the -e option of psiphon otherwise it will not work

PPS: You can also use docker on linux if you do not wan't to compile your own ssh binary. Docker is system independent.

PPPS: If you do not want to use our docker image, it is totally fine. You can create your own docker image with the help of the Dockerfile. Refer to for more details on how to build the docker image.

docker build -t psiphon .