All Projects → fasmide → remotemoe

fasmide / remotemoe

Licence: MIT License
tunnels to localhost and other ssh plumbing

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Labels

Projects that are alternatives of or similar to remotemoe

Mole
CLI application to create ssh tunnels focused on resiliency and user experience.
Stars: ✭ 1,520 (+1257.14%)
Mutual labels:  tunnel, ssh
Sshmon
Manage and monitor SSH connections.
Stars: ✭ 152 (+35.71%)
Mutual labels:  tunnel, ssh
Ssh2 Promise
ssh with promise/async await and typescript support
Stars: ✭ 110 (-1.79%)
Mutual labels:  tunnel, ssh
Sshtunnel
SSH tunnels to remote server.
Stars: ✭ 797 (+611.61%)
Mutual labels:  tunnel, ssh
Secure Wireguard Implementation
A guide on implementing a secure Wireguard server on OVH (or any other Debian VPS) with DNSCrypt, Port Knocking & an SSH-Honeypot
Stars: ✭ 200 (+78.57%)
Mutual labels:  tunnel, ssh
Docker Tunnel
a (simple) dockerized ssh tunnel
Stars: ✭ 96 (-14.29%)
Mutual labels:  tunnel, ssh
Corkscrew
Corkscrew is a tool for tunneling SSH through HTTP proxies.
Stars: ✭ 149 (+33.04%)
Mutual labels:  tunnel, ssh
Openiothub
💖A free IoT (Internet of Things) platform and private cloud. [一个免费的物联网和私有云平台,支持内网穿透]
Stars: ✭ 371 (+231.25%)
Mutual labels:  tunnel, ssh
Drawbridge
manage SSH access to multiple applications/environments protected by bastion servers
Stars: ✭ 196 (+75%)
Mutual labels:  tunnel, ssh
Fq Book
📖《这本书能让你连接互联网》详细阐述代理、隧道、VPN运作过程,并对GFW策略如:地址端口封锁、服务器缓存投毒、数字验证攻击、SSL连接阻断做相关的原理说明
Stars: ✭ 2,393 (+2036.61%)
Mutual labels:  tunnel, ssh
Python Proxy
HTTP/HTTP2/HTTP3/Socks4/Socks5/Shadowsocks/ShadowsocksR/SSH/Redirect/Pf TCP/UDP asynchronous tunnel proxy implemented in Python 3 asyncio.
Stars: ✭ 692 (+517.86%)
Mutual labels:  tunnel, ssh
Teleconsole
Command line tool to share your UNIX terminal and forward local TCP ports to people you trust.
Stars: ✭ 2,750 (+2355.36%)
Mutual labels:  tunnel, ssh
Stowaway
👻Stowaway -- Multi-hop Proxy Tool for pentesters
Stars: ✭ 500 (+346.43%)
Mutual labels:  tunnel, ssh
Sidedoor
SSH connection daemon for Debian/Raspbian/Ubuntu/etc
Stars: ✭ 97 (-13.39%)
Mutual labels:  tunnel, ssh
Exodus
network proxy and tunnel (VPN)
Stars: ✭ 432 (+285.71%)
Mutual labels:  tunnel, ssh
Sish
HTTP(S)/WS(S)/TCP Tunnels to localhost using only SSH.
Stars: ✭ 2,087 (+1763.39%)
Mutual labels:  tunnel, ssh
gost
GO Simple Tunnel - a simple tunnel written in golang
Stars: ✭ 8,395 (+7395.54%)
Mutual labels:  tunnel, ssh
Nps
一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
Stars: ✭ 19,537 (+17343.75%)
Mutual labels:  tunnel, ssh
Inlets Pro
Secure TCP and HTTP tunnels that work anywhere
Stars: ✭ 179 (+59.82%)
Mutual labels:  tunnel, ssh
Fasttunnel
NAT 内网穿透 远程内网计算机 域名访问内网站点 反向代理内网服务 花生壳 端口转发 http代理 微信 小程序 expose a local server behind a NAT or firewall to the internet like ngrok and frp. NAT ssh proxy tunnel reverse-proxy
Stars: ✭ 248 (+121.43%)
Mutual labels:  tunnel, ssh
                            __                              
.----.-----.--------.-----.|  |_.-----.--------.-----.-----.
|   _|  -__|        |  _  ||   _|  -__|        |  _  |  -__|
|__| |_____|__|__|__|_____||____|_____|__|__|__|_____|_____|

remotemoe - ssh plumbing all the things

go report Uptime Robot ratio (7 days) License

What is it

remotemoe is a software daemon for exposing ad-hoc services to the internet without having to deal with the regular network stuff such as configuring VPNs, changing firewalls, or adding port forwards.

Common use-cases include:

  • Allow third-party services to access your web app while you're developing it.
  • Let containers expose themself to the internet without having to change any infrastructure.
  • Quickly share a web app with a collaborator or team for review.
  • Allow your CI to run development branches that expose them-self for review.
  • Access remotely deployed Raspberry Pi's.

remotemoe doesn't require its users to install, trust, or run any third-party software. It uses plain old SSH, which is available everywhere these days.

How it works

Users connect to remotemoe with their regular ssh client - they use the -R parameter to forward services which remotemoe then pass requests back to, from the public internet.

At its purest form, users open a shell to remotemoe, passing on their local port 80.

$ ssh -R 80:localhost:80 remote.moe

Once opened, other people will immediately be able to access your localhost:80 by accessing xyz.remote.moe as if it was on the public internet.

What it's not

It's no SaaS; if you need a reliable service, you're probably going to have to run it your self - any small cloud instance should do just fine...

Available for getting started and testing is remote.moe. It is provided with no guarantees and will run broken and unstable branches from time to time :)

Try remote.moe to get started

Use remote.moe if you are ready for a quick and dirty getting started experience. Assume you have a web server running on your local machine that listens for HTTP traffic on port 8080.

In a terminal, enter:

$ cd Pictures/; python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...

In another terminal, enter:

$ ssh -R80:localhost:8080 remote.moe
New to remotemoe? - try 'firsttime' or 'help' and start exploring!

http (80)
http://7k3j6g3h67l23j345wennkoc4a2223rhjkba22o77ihzdj3achwa.remote.moe/

$ 

That's pretty much all there is to it - all your nudes are now accessible on the URL that remotemoe spits out.

Next up is typing help to have a look at some of the other features. For instance, you could add a more human-friendly hostname, add HTTPS and SSH forwards, or look at the different ways to keep an ssh tunnel open.

Protocols

For convenience, remotemoe handles various types of protocols differently to make them easier to access:

HTTP

When typical HTTP ports are forwarded (80, 81, 3000, 8000 or 8080), remotemoe reverse proxies traffic from its HTTP server to the ssh tunnel.

Based on the incoming HTTP request's Host-header, it selects the appropriate ssh tunnel to use.

HTTPS

When typical HTTPS ports are forwarded (443, 3443, 4443, or 8443), just as HTTP, remotemoe picks an SSH tunnel to route traffic based on the Host-header.

HTTPS traffic, however, requires the forwarded service to talk TLS. It doesn't do any certificate validation as no-one will be able to provide a valid SSL certificate inside the SSH tunnel.

SSH

SSH does not support virtual hosts in the same manner as HTTP does, but there's a trick we can use: the -J ProxyJump parameter.

When typical SSH ports are forwarded (22, 2022 or 2222), remotemoe outputs a special ssh command which can reach the peer:

$ ssh -R22:localhost:22 remote.moe

ssh (22)
ssh -J remote.moe 7k3j6g3h67l23j345wennkoc4a2223rhjkba22o77ihzdj3achwa.remote.moe

$ 

ProxyJump'ing through remotemoe, allows it to see what host the client is trying to reach and just like HTTP(S) traffic, pick an appropriate tunnel pass communication on to.

By the way, ssh traffic is the most secure way of using remotemoe. You don't have to trust anyone but your remote endpoint. As long as you know your peers' fingerprint beforehand - there is no way remotemoe can intercept these ssh sessions even though they pass through it.

Other

remotemoe does not deal with any other protocols for now. But they are still available to use, however, not directly accessible without SSH.

You could for example access a forwarded SMTP service, that was forwarded with ssh -R25:localhost:25 remote.moe by doing something in the lines of:

$ ssh -L25:7k3j6g3h67l23j345wennkoc4a2223rhjkba22o77ihzdj3achwa.remote.moe:25 remote.moe 

Notice -L instead of -R - this pulls the remote service to your localhost, and the remote SMTP service should now be accessible from localhost:25.

Running remotemoe

You will need

  • Some cloud instance, running ubuntu or similar
  • ... that has a public IP address
  • ... and a domain or subdomain with records appropriately configured
  • Knowledge of Golang and general systems administration :)

To run remotemoe, you need to:

  • Fetch this repo, build and move the executable to your instance or server
  • Create a service for running remotemoe, take inspiration from infrastructure/remotemoe.service
  • Ensure the hostname of the machine is set accordingly to your domain or subdomain.
  • Move openssh out of the way, remotemoe wants to listen on port 22

This shall be automated in the future :)

Compared to Cloudflare's Argo Tunnels

Argo tunnels, and Cloudflare in general, do a lot of things that remotemoe does not, but one similarity is their trycloudflare.com service (https://blog.cloudflare.com/a-free-argo-tunnel-for-your-next-project/) where everyone can expose their web app through a tunnel.

Using their example, when using Argo tunnels, you are required to download their client and run:

$ cloudflared tunnel --url localhost:7000

a remotemoe equivalent would be:

$ ssh -R80:localhost:7000 remote.moe

remotemoe and especially Cloudflare does a lot more than this, but to highlight a few differences:

  • Cloudflare provides a massive Highly Available service at a cost - remotemoe does not.
  • Cloudflare requires you to create an account if you need to define hostnames or bring a custom domain - remotemoe does not.
  • remotemoe can be used as an SSH ProxyJump-host and is not limited to any specific protocol - any TCP port is reachable through remotemoe.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].