Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/flaviostutz/ssh-tunnels

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/flaviostutz/ssh-tunnels

  • v0.0.0-20200716193333-f3e18028ca7a
  • Source
  • Go
  • Socket score

Version published
Created
Source

ssh-jwt

A SSH server that authorizes PTY, remote or local port forwarding based on JWT token entered as password.

View ENVs and Usage for more information on how to launch this.

Usage

shared key signing

  • create docker-compose.yml:
version: '3.7'
services:
  ssh-tunnels:
    image: flaviostutz/ssh-jwt
    ports:
      - "2222:22"
    environment:
     - LOG_LEVEL=debug
     - JWT_KEY=123
     - ENABLE_REMOTE_FORWARDING=true
     - ENABLE_LOCAL_FORWARDING=true
     - ENABLE_PTY=true
  • run docker-compose up

  • Open http://jwt.io

  • Create a JWT key with the following contents

header

{
  "alg": "HS512",
  "typ": "JWT"
}

payload

{
  "aid": "234243453453",
  "mid": "GTE3456",
  "exp": 1587529693,
  "rfw": "0.0.0.0:4343 0.0.0.0:4242",
  "lfw": "10.1.1.254:80 10.1.1.254:81 45.55.44.56:80",
  "pty": "true"
}

signature use password "123"

  • Copy the encoded/signed JWT contents to clipboard

  • In a terminal, run

ssh root@localhost -p 2222
  • When asked for password, paste Enconded JWT contents

  • If all is OK, you will be connected to a shell session.

  • Modify JWT claim "pty" to "false" and try to connect again

  • If the token is invalid or it doesn't have claim "pty", you connection will be refused.

RS512 pub/priv signing key

  • create docker-compose.yml:
version: '3.7'
services:
  ssh-tunnels:
    image: flaviostutz/ssh-jwt
    ports:
      - "2222:22"
    secrets:
      - rs-pub-key
    environment:
      - JWT_ALGORITHM=RS512
      - JWT_KEY_SECRET_NAME=rs-pub-key
      - ENABLE_LOCAL_FORWARDING=true
      - ENABLE_REMOTE_FORWARDING=true
      - ENABLE_PTY=true
      - LOG_LEVEL=debug

secrets:
  rs-pub-key:
    file: ./test_rsa.pub

JWS Algo: RS512

Payload

{
  "aid": "234243453453",
  "mid": "GTE3456",
  "exp": 1587529693,
  "rfw": "0.0.0.0:4343 0.0.0.0:4242",
  "lfw": "10.1.1.254:80 10.1.1.254:81 45.55.44.56:80",
  "pty": "true"
}

Click on "Generate JWS Keys"

  • Create file test_rsa.pub with public key contents

  • Create file test_rsa.key with private key contents

  • Copy the contents of the JWT key from the "Serialize" field from the site

  • Run docker-compose up

  • On another terminal, run

    • ssh root@localhost -p 2222 -L 0.0.0.0:1212:10.1.1.254:80
  • On a third terminal run

    • curl localhost:1212
  • If any web server is running on 10.1.1.254:80 it will get its contents

JWT token Claims

  • rfw - a list of space separated "[bindhost]:[port]" indicating authorized remote port forward binds. ex.: "0.0.0.0:4444" will accept remote port forwarding to the other side

  • lfw - a list of space separated "[desthost]:[port]" indicating authorized local port forwards destinations. ex.: "201.22.123.43:80" will accept local port forwardings to 201.22.123.43 through the ssh tunnel

  • pty - permit interactive terminal sessions in shell if "true"

ENVs

  • JWT_ALGORITHM - JWT algorithm used for signing entered tokens. Maybe one of ES256, ES384, ES512, HS256, HS384, HS512, PS256, PS384, PS384, PS512, RS256, RS384, RS512. defaults to "HS512".
  • JWT_KEY - key used by the signing algorith. required
  • LOG_LEVEL - log level (error, warn, info, debug). defaults to info
  • BIND_HOST - host to bind service to. defaults to 0.0.0.0 (all host interfaces will respond)
  • BIND_PORT - ssh service port. defaults to 22
  • ENABLE_REMOTE_FORWARDING - enable remote port forwarding. if not enabled, even if authorized on JWT token, it won't work. default. to false.
  • ENABLE_LOCAL_FORWARDING - enable local port forwarding. if not enabled, event if authorized on JWT token, it won't work. defaults to false.
  • ENABLE_PTY - enable pty terminal with a shell session on connect. if not enabled, even if authorized on JWT token, it won't work. defaults to true
  • JWT_KEY_SECRET_NAME - Docker secret that will be used for loading key into ssh

FAQs

Package last updated on 16 Jul 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc