无需任何软件内网穿透隧道工具：localhost.run

作者:admin
时间:2024-08-19 15:36
分类:电脑技术
内容: 无需任何软件内网穿透隧道工具：localhost.run ngrok之类的内网穿透软件需要下载配置软件，这里有一个既不用下载软件，又不需要注册账号的免费内网穿透工具：localhost.run。工具官网：http://localhost.run/ 使用文档：http://localhost.run/docs/​​ 根据官网描述，只需要一行命令，就可以跑起来了： XML/HTML代码 ssh -R 80:localhost:8080 nokey@localhost.run XML/HTML代码 -R命令表示反向端口转发 80是被指定的转发端口 localhost是你局域网ip地址（对应127.0.0.1） 8080是你的局域网端口号 nokey@localhost.run是一台处在公网的服务器例如：需要外网访问局域网服务器 192.168.0.100:9000 XML/HTML代码 ssh -R 80:192.168.0.100:9000 nokey@localhost.run 虽然可以直接用，但这种方式，给的免费域名只能使用几个小时。要想永久不变域名，需要添加以下SSH Key： 1、现在电脑上生成ssh key： XML/HTML代码 ssh-keygen 然后把public key放入到这个添加页面：​ ​https://admin.localhost.run/​​ XML/HTML代码 cat ~/.ssh/id_rsa.pub 再去运行命令行： XML/HTML代码 ssh -R 80:localhost:80 nokey@localhost.run 这里会给你一个随机的域名，可以用浏览器直接访问，因为服务器在境外，速度可能慢一些。注意：仅支持http方式访问，仅支持80端口的随机域名。 tunnelmole：https://tunnelmole.com/ （功能用法类似，只能转发本机端口）Github SirTunnel：https://github.com/anderspitman/SirTunnel 自建SSH隧道实现内网穿透与端口转发，Docker快速部署 Github：https://github.com/luler/hello_ssh 一、简介一款基于OpenSSH构建的内网穿透与端口转发工具，通过SSH隧道技术实现支持所有TCP协议通信，包括SSH、HTTP、HTTPS等各类应用。提供灵活部署方式，特别支持Docker容器化快速部署。二、安装准备提前自行安装好docker、docker-compose软件环境新建docker-compose.yml配置文件，内容如下： XML/HTML代码 version: '3' services: hello_ssh: image: ghcr.io/luler/hello_ssh:latest ports: - "2222:22" # 这个端口用于连接ssh服务，可修改 - "9100-9200:9100-9200" #这些端口用于端口转发使用，可修改 restart: unless-stopped 一键启动程序 XML/HTML代码 docker-compose up -d 或者 XML/HTML代码 docker run -p 2222:22 -p 9100-9200:9100-9200 --restart unless-stopped ghcr.io/luler/hello_ssh:latest 附Dockerfile XML/HTML代码 FROM alpine:3.19 # 安装OpenSSH服务器和必要工具 RUN apk --no-cache add openssh openssh-server-pam bash # 创建jump用户 RUN adduser -D jump && \ passwd -d jump && \ mkdir -p /home/jump/.ssh && \ chown jump:jump /home/jump/.ssh # 创建必要的SSH目录 RUN mkdir -p /var/run/sshd # 创建一个端口信息显示脚本 RUN echo '#!/bin/bash' > /usr/local/bin/show-forwards && \ echo 'echo "═════════════ PORT FORWARDING INFO ═════════════"' >> /usr/local/bin/show-forwards && \ echo 'echo "???? Connection from: "' >> /usr/local/bin/show-forwards && \ echo 'echo ""' >> /usr/local/bin/show-forwards && \ echo 'echo "???? Active port forwardings:"' >> /usr/local/bin/show-forwards && \ echo 'netstat -tln | grep LISTEN | grep -v 127.0.0.1 | grep -v "::1" | grep -v :22 | while read line; do' >> /usr/local/bin/show-forwards && \ echo ' proto=$(echo | awk "{print \$1}")' >> /usr/local/bin/show-forwards && \ echo ' local=$(echo | awk "{print \$4}")' >> /usr/local/bin/show-forwards && \ echo ' echo " → "' >> /usr/local/bin/show-forwards && \ echo 'done' >> /usr/local/bin/show-forwards && \ echo 'echo ""' >> /usr/local/bin/show-forwards && \ echo 'echo "This session will remain active for port forwarding."' >> /usr/local/bin/show-forwards && \ echo 'echo "Press Ctrl+C to terminate the connection."' >> /usr/local/bin/show-forwards && \ echo 'echo "════════════════════════════════════════════════"' >> /usr/local/bin/show-forwards && \ echo 'sleep infinity' >> /usr/local/bin/show-forwards && \ chmod +x /usr/local/bin/show-forwards # 配置SSH服务 RUN sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords yes/' /etc/ssh/sshd_config && \ sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \ sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config && \ # 添加保活设置 echo "ClientAliveInterval 3" >> /etc/ssh/sshd_config && \ echo "ClientAliveCountMax 3" >> /etc/ssh/sshd_config && \ # 检查并替换已存在的GatewayPorts，如果不存在则添加 sed -i '/^GatewayPorts/d' /etc/ssh/sshd_config && \ echo "GatewayPorts yes" >> /etc/ssh/sshd_config && \ # 添加jump用户的特殊配置 echo "Match User jump" >> /etc/ssh/sshd_config && \ echo " PermitEmptyPasswords yes" >> /etc/ssh/sshd_config && \ echo " AllowTcpForwarding yes" >> /etc/ssh/sshd_config && \ echo " X11Forwarding no" >> /etc/ssh/sshd_config && \ echo " PermitTTY yes" >> /etc/ssh/sshd_config && \ echo " PermitTunnel no" >> /etc/ssh/sshd_config && \ # 使用显示端口映射的脚本 echo " ForceCommand /usr/local/bin/show-forwards" >> /etc/ssh/sshd_config # SSH需要的host keys RUN ssh-keygen -A # 开放22端口 EXPOSE 22 # 启动SSH服务 CMD ["/usr/sbin/sshd", "-D", "-e"] 三、使用示例 1. 把本机上工作在9000端口的portainer服务暴露到公网执行下面端口转发命令，左边的9100端口可以选择容器映射到主机的9100-9200端口（一个端口只能被一个隧道使用，否则执行下面命令会在客户端提示warning），- p 2222是指定连接ssh服务的端口，localhost:9000为任何本机可以访问的服务，这里指定为本机的portainer服务 XML/HTML代码 ssh -R 9100:localhost:9000 jump@45.125.32.62 -p 2222 成功执行完上面命令，就可以通过公网ip（域名）+端口访问本地服务了使用ip+端口可以正常访问portainer服务 2. 暴露一个工作在3306端口的mysql服务执行下面命令可以暴露任何TCP协议的端口，左边设置公网服务器的端口，localhost:3306就是本机可以连接的mysql服务 XML/HTML代码 ssh -R 9101:localhost:3306 jump@45.125.32.62 -p 2222 成功执行上面命令之后，就可以使用公网ip+9101端口访问mysql服务四、总结自建ssh隧道服务可以一定程度保证网络速度稳定性、数据安全性，不过前提是你的有一个具有公网ip的服务器 ssh客户端直连使用非常方便，一行命令就能实现端口转发，但是不能自动重连，可以考虑使用autossh来进一步保证内网穿透的稳定性当前工具默认设置为无需密码即可使用ssh隧道服务，可能存在被盗用风险，可自行参考源码构建镜像，增加密码验证功能。

立即登陆发表评论

返回日志列表
返回主页