mobile-shell / mobile-shell/mosh

Support for reverse port forwarding

Open
#499 9 comments 12 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature Reliable byte stream
Dominant language
C++
Stars
14.5k
Forks
865
PR merge metrics
No merged PRs in 30d

Description

This would be a nice to have; basically the equivalent of SSH's -R option:

 -R [bind_address:]port:host:hostport
         Specifies that the given port on the remote (server) host is to be forwarded
         to the given host and port on the local side.  This works by allocating a
         socket to listen to port on the remote side, and whenever a connection is
         made to this port, the connection is forwarded over the secure channel, and
         a connection is made to host port hostport from the local machine.

         Port forwardings can also be specified in the configuration file.  Privi-
         leged ports can be forwarded only when logging in as root on the remote
         machine.  IPv6 addresses can be specified by enclosing the address in square
         brackets.

         By default, the listening socket on the server will be bound to the loopback
         interface only.  This may be overridden by specifying a bind_address.  An
         empty bind_address, or the address `*', indicates that the remote socket
         should listen on all interfaces.  Specifying a remote bind_address will only
         succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).

         If the port argument is `0', the listen port will be dynamically allocated
         on the server and reported to the client at run time.  When used together
         with -O forward the allocated port will be printed to the standard output.

My specific use case here is wanting to use https://github.com/wincent/clipper, which relies on reverse port-forwarding to expose the local clipboard to a process running on a remote host (ie. to do things like copy from tmux or Vim on a remote machine and have it land in your local system clipboard).

I've seen tickets here for agent forwarding and "normal" (not reverse) port-forwarding, so thought I'd open up a ticket to track this one separately.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating any existing normal port-forwarding support and related tests or entry points in the repository, then compare their behavior with SSH's -R semantics described in the issue. Use the Clipper use case as a concrete scenario; done means remote listening sockets can forward connections to the local side, including the documented binding and dynamic-port behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.