Forward a local port to another

Open
#24 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
1/5
Estimated time
Under an hour
Newbie friendliness
48/100
Issue type
Documentation
Clarity
Mostly clear
Activity status
Stale
Tech stack
shell

Research direction

The issue provides SSH local-port-forwarding content and command examples but names no target file or test. First locate the repository's existing documentation or tips structure and comparable networking entries. Done means adding the material in the established format without losing the examples and explanations.

Written by the indexing model from the issue text.

Description

Local SSH tunnel a super easy solution.

Forward local 1234 to 5900:
ssh -g -L 1234:localhost:5900 localhost

The basic syntax for a local port forward command is straightforward:

ssh -L local_port:destination_server_ip:remote_port ssh_server_hostname

⦁ ssh – Starts the SSH client program on the local machine and establishes a secure connection to the remote SSH server.

⦁ -L local_port:destination_server_ip:remote_port – The local port on the local client is being forwarded to the port of the destination remote server.

⦁ ssh_server_hostname – This element of the syntax represents the hostname or IP address of the remote SSH server.

The target server and ssh server could be different. An example:

ssh –L 5900:120.5.2.5:80 admin@ssh.server.com

In the example above, all traffic sent to port 5900 on your local host is being forwarded to port 80 on the remote server located at 120.5.2.5.

How Local Forwarding works
Local forwarding is used to forward a port from the client machine to the server machine. Basically, the SSH client listens for connections on a configured port, and when it receives a connection, it tunnels the connection to an SSH server. The server connects to a configurated destination port, possibly on a different machine than the SSH server.

Typical uses for local port forwarding include:

Tunneling sessions and file transfers through jump servers

Connecting to a service on an internal network from the outside

Connecting to a remote file share over the Internet

Quite a few organizations for all incoming SSH access through a single jump server. The server may be a standard Linux/Unix box, usually with some extra hardening, intrusion detection, and/or logging, or it may be a commercial jump server solution.

Many jump servers allow incoming port forwarding, once the connection has been authenticated. Such port forwarding is convenient, because it allows tech-savvy users to use internal resources quite transparently. For example, they may forward a port on their local machine to the corporate intranet web server, to an internal mail server's IMAP port, to a local file server's 445 and 139 ports, to a printer, to a version control repository, or to almost any other system on the internal network. Frequently, the port is tunneled to an SSH port on an internal machine.

In OpenSSH, local port forwarding is configured using the -L option:

ssh -L 80:intra.example.com:80 gw.example.com
This example opens a connection to the gw.example.com jump server, and forwards any connection to port 80 on the local machine to port 80 on intra.example.com.

By default, anyone (even on different machines) can connect to the specified port on the SSH client machine. However, this can be restricted to programs on the same host by supplying a bind address:

ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
The LocalForward option in the OpenSSH client configuration file can be used to configure forwarding without having to specify it on command line.

see:
https://www.ssh.com/academy/ssh/tunneling/example

Dominant language
Python
Stars
5
Forks
2
PR merge metrics
No merged PRs in 30d

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.

More from davideuler/programming-tips

All issues in davideuler/programming-tips

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.