Skip to content

Instantly share code, notes, and snippets.

@fenying
Created August 6, 2025 02:59
Show Gist options
  • Save fenying/75f13102ba2cc79a4084b7870522bed7 to your computer and use it in GitHub Desktop.
Save fenying/75f13102ba2cc79a4084b7870522bed7 to your computer and use it in GitHub Desktop.

Revisions

  1. fenying created this gist Aug 6, 2025.
    42 changes: 42 additions & 0 deletions ssh-forward-mappings.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    ssh.map-port-to-local() {

    local LOCAL_HOST=$SSH_MAP_LOCAL_HOST
    local LOCAL_PORT=$SSH_MAP_LOCAL_PORT

    if [[ -z "$SSH_MAP_REMOTE_SERVER" ]] || [[ -z "$SSH_MAP_REMOTE_PORT" ]]; then
    echo "Usage: z.ssh.map-port-to-local"
    echo " env export [email protected] [Required]"
    echo " env export SSH_MAP_REMOTE_PORT=12345 [Required]"
    echo " env export SSH_MAP_REMOTE_HOST=127.0.0.1 [Default: 127.0.0.1]"
    echo " env export SSH_MAP_LOCAL_HOST=0.0.0.0 [Default: 127.0.0.1]"
    echo " env export SSH_MAP_LOCAL_PORT=23456 [Default: \$SSH_MAP_REMOTE_PORT]"
    echo " env export SSH_KEY_FILE=xxx.pem [Default: null]"
    return 1
    fi

    if [[ -z "$LOCAL_HOST" ]]; then
    LOCAL_HOST=127.0.0.1
    fi

    if [[ -z "$LOCAL_PORT" ]]; then
    LOCAL_PORT=$SSH_MAP_REMOTE_PORT
    fi

    if [[ -z "$SSH_MAP_REMOTE_HOST" ]]; then
    SSH_MAP_REMOTE_HOST=127.0.0.1
    fi

    if [[ ! -z "$SSH_KEY_FILE" ]]; then
    SSH_KEY_FILE_ARGS="-i $SSH_KEY_FILE"
    fi

    echo "Mapping $SSH_MAP_REMOTE_HOST:$SSH_MAP_REMOTE_PORT on $SSH_MAP_REMOTE_SERVER [Remote] -> $LOCAL_HOST:$LOCAL_PORT [Local]"

    ssh \
    -o StrictHostKeyChecking=no \
    -4 \
    $SSH_KEY_FILE_ARGS \
    $SSH_MAP_REMOTE_SERVER \
    -N \
    -L $LOCAL_HOST:$LOCAL_PORT:$SSH_MAP_REMOTE_HOST:$SSH_MAP_REMOTE_PORT
    }