Passport is a powerful connection management tool that simplifies network tunneling, port forwarding and more. By seamlessly integrating three distinct running modes within a single binary file, Passport bridges the gap between different network environments, redirecting services and handling connections seamlessly, ensuring reliable network connectivity and ideal network environment. Also with highly integrated authorization handling, Passport empowers you to efficiently manage user permissions and establish uninterrupted data flow, ensuring that sensitive resources remain protected while applications maintain high performance and responsiveness.
-
Unified Operation: Passport can function as a server, client, or broker, three roles from a single executable file.
-
Authorization Handling: By IP address handling, Passport ensures only authorized users gain access to sensitive resources.
-
In-Memory Certificate: Provides a self-signed HTTPS certificate with a one-year validity, stored entirely in memory.
-
Auto Reconnection: Providing robust short-term reconnection capabilities, ensuring uninterrupted service.
-
Connection Updates: In scenarios where connection is interrupted, Passport supports real-time connection updates.
-
Port Forwarding: Efficiently manage and redirect your TCP and/or UDP services from one port to entrypoints everywhere.
-
Zero Dependencies: Fully self-contained, with no external depende 9A8B ncies, ensuring a simple and efficient setup.
-
Zero Configuration File: Simply execute with a single URL command, making it ideal for containerized environments.
To run the program, provide a URL specifying the mode and connection addresses. The URL format is as follows:
server://linkAddr/targetAddr
client://linkAddr/targetAddr
broker://linkAddr/targetAddr
Note that only server
and broker
mode support authorization Handling, which you can just add auth entry after #
. For example:
server://linkAddr/targetAddr#authScheme://authAddr/secretPath
broker://linkAddr/targetAddr#authScheme://authAddr/secretPath
- authScheme: The option allows you to choose between using HTTP or HTTPS.
- authAddr: The server address and port designated for authorization handling.
- secretPath: The secret endpoint for processing authorization requests.
linkAddr
: The address for accepting client connections. For example,:10101
.targetAddr
: The address for listening to external connections. For example,:10022
.
Run as Server
./passport server://:10101/:10022
- This command will listen for client connections on port
10101
, listen and forward data to port10022
.
Run as Server with authorization
./passport server://:10101/:10022#https://hostname:8443/server
- The server handles authorization at
https://hostname:8443/server
, on your visit and your IP logged. - The server will listen for client connections on port
10101
, listen and forward data to port10022
.
linkAddr
: The address of the server to connect to. For example,server_ip:10101
.targetAddr
: The address of the target service to connect to. For example,127.0.0.1:22
.
Run as Client
./passport client://server_hostname_or_IP:10101/127.0.0.1:22
- This command will establish link with
server_hostname_or_IP:10101
, connect and forward data to127.0.0.1:22
.
linkAddr
: The address for accepting client connections. For example,:10101
.targetAddr
: The address of the target service to connect to. For example,127.0.0.1:22
.
Run as Broker
./passport broker://:10101/127.0.0.1:22
- This command will listen both
tcp
andudp
on port10101
, connect and forward data to127.0.0.1:22
.
Run as Broker with authorization
./passport broker://:10101/127.0.0.1:22#https://hostname:8443/broker
- The server handles authorization at
https://hostname:8443/broker
, on your visit and your IP logged. - This command will listen both
tcp
andudp
on port10101
, connect and forward data to127.0.0.1:22
.
You can also run Passport using container. The image is available at ghcr.io/yosebyte/passport.
To run the container in server mode with or without authorization:
docker run --rm ghcr.io/yosebyte/passport server://:10101/:10022#https://hostname:8443/server
docker run --rm ghcr.io/yosebyte/passport server://:10101/:10022
To run the container in client mode:
docker run --rm ghcr.io/yosebyte/passport client://server_hostname_or_IP:10101/127.0.0.1:22
To run the container in server mode with or without authorization:
docker run --rm ghcr.io/yosebyte/passport broker://:10101/127.0.0.1:22#https://hostname:8443/broker
docker run --rm ghcr.io/yosebyte/passport broker://:10101/127.0.0.1:22
This project is licensed under the MIT License. See the LICENSE file for details.