{"id":18578982,"url":"https://github.com/patrickmn/senka","last_synced_at":"2025-05-16T02:12:42.108Z","repository":{"id":1561700,"uuid":"1975520","full_name":"patrickmn/senka","owner":"patrickmn","description":"Secure, portable tunneling/proxy server","archived":false,"fork":false,"pushed_at":"2011-07-01T08:38:19.000Z","size":100,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-09T16:57:24.843Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://patrickmn.com/projects/senka/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patrickmn.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-06-29T23:51:02.000Z","updated_at":"2016-08-10T06:16:48.000Z","dependencies_parsed_at":"2022-07-18T17:00:33.609Z","dependency_job_id":null,"html_url":"https://github.com/patrickmn/senka","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickmn%2Fsenka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickmn%2Fsenka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickmn%2Fsenka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patrickmn%2Fsenka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patrickmn","download_url":"https://codeload.github.com/patrickmn/senka/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453625,"owners_count":22073618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T23:38:28.964Z","updated_at":"2025-05-16T02:12:42.091Z","avatar_url":"https://github.com/patrickmn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Senka is an SSH server which only permits traffic forwarding, and only for a list of\npredefined users (identified by RSA keys), which means it's essentially a secure,\nportable tunneler/proxy server. It's ideal for bypassing outgoing firewall restrictions,\nor encrypting your traffic on insecure/monitored networks.\n\nSenka can be used on any server that has Python, regardless of whether the user\nhas administrator privileges or access to e.g. the local OpenSSH server, and can be\nconnected to by any client which has either ssh or PuTTY.\n\nSetup:\n\n  - One-time client setup:\n       - Linux/*BSD/OS X:\n           1. Run the command: ssh-keygen -f senka.key\n\t   2. (Optional) Enter a passphrase for your client key (recommended)\n\t   3. Copy the contents of the file senka.key.pub (you will need this for the server)\n       - Windows:\n           1. Download PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html\n\t      (Download the 'everything' package, or PuTTY and PuTTYgen.)\n\t   2. Run PuTTYgen\n\t   3. Click \"Generate\" (move the mouse if instructed)\n\t   4. (Optional) Enter a passphrase (recommended)\n\t   5. Click \"Save private key\", and save the .ppk file (e.g. senka.ppk) somewhere safe\n\t   6. Save the contents of the \"Public key for pasting into OpenSSH...\" field\n\t      (you will need this for the server)\n\t   7. Close PuTTYgen\n\t   8. Open PuTTY\n\t   9. Enter/do the following:\n\t      * Host name: \u003cusername\u003e@\u003cyour server's hostname/IP\u003e (e.g. patrick@myserver.com)\n\t      * Port: The port which Senka will listen on (default 2222)\n\t      * Under Connection -\u003e SSH -\u003e Auth:\n\t          Private key file for authentication: Select the .ppk file you saved\n\t      * Under Connection -\u003e SSH -\u003e Tunnels:\n\t          Source port: Some local, unused port (e.g. 31337)\n\t\t  Type: Dynamic\n\t\t  click \"Add\"\n\t      * Go back to \"Session\" (top menu item)\n\t      * Under \"Saved Sessions\", enter some name (e.g. Senka), and click \"Save\"\n\n  - One-time server setup:\n\n      Prerequisite: You need Python, Twisted, and pyOpenSSL. Usually it's enough to do:\n        - Ubuntu/Debian: sudo apt-get install python-twisted python-openssl\n        - Fedora/SUSE:   sudo yum install python-twisted python-openssl\n\n      1. Run twistd -noy senka.tac. This will generate a file, authorized_keys, which stores\n         the list of users (and their keys) who are allowed to connect to the server\n      2. Edit authorized_keys\n      3. Add a line containing your username and public key string, e.g.:\n         patrick ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEA1e...\n      4. Save the file\n\nUsage:\n\n  - Server:\n      1. Run twistd -noy senka.tac (or twistd -oy senka.tac for daemon mode). It should now listen on port 2222.\n         (You can define a list of ports at the bottom of senka.tac if you want!)\n\n  - Linux/*BSD/OS X client:\n      1. Run the command: ssh -i senka.key -D 127.0.0.1:31337 \u003cusername\u003e@\u003cserver.com\u003e -p 2222 -N\n         (This starts a local proxy server (on port 31337) which tunnels data through Senka.)\n      2. Keep the ssh session open. (You will not see any output.)\n      3. In any application that supports connecting through a SOCKS proxy (or system-wide\n         via e.g. GNOME -\u003e System Settings -\u003e Proxy), set the following:\n\t   * Proxy type: SOCKS5 (or just SOCKS)\n\t   * Host: 127.0.0.1\n\t   * Port: 31337\n\t   (No username/password)\n\n  - Windows client:\n      1. Open PuTTY\n      2. Double-click your previously saved session, e.g. \"Senka\"\n         (This starts a local proxy server (on port 31337) which tunnels data through Senka.)\n      3. Enter the password for your private key, if prompted\n      4. Keep the PuTTY window/session open. (You will not see any output.)\n      5. In any application that supports connecting through a SOCKS proxy, set the following:\n\t   * Proxy type: SOCKS5 (or just SOCKS)\n\t   * Host: 127.0.0.1\n\t   * Port: 31337\n\t   (No username/password)\n\n       To use the proxy system-wide, go to Control Panel -\u003e Internet Options -\u003e Connections -\u003e\n       LAN settings, select \"Use a proxy server for your LAN\", then click \"Advanced\", and under\n       \"Socks:\" enter: Proxy address to use: 127.0.0.1, Port: 31337. Click OK in all windows.\n\n  Congratulations! Any connection made through the local SOCKS proxy is now sent, encrypted, through\n  the Senka server, creating a tunnel which swiftly defeats any pesky, restrictive firewalls and\n  local network monitoring.\n\n  Happy browsing!\n\nTips:\n\n  - Windows:\n      If you connect to several different Senka servers, you might want to use the same key file,\n      and also only have to unlock it once. Use Pageant (from the PuTTY package) to keep your\n      key in memory. It will automatically be used for any new PuTTY/Senka connections.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickmn%2Fsenka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatrickmn%2Fsenka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatrickmn%2Fsenka/lists"}