Skip to content

Instantly share code, notes, and snippets.

@ssrlive
Last active October 12, 2024 14:58
Show Gist options
  • Save ssrlive/32d4f2796746cd5e751985be19adf7a1 to your computer and use it in GitHub Desktop.
Save ssrlive/32d4f2796746cd5e751985be19adf7a1 to your computer and use it in GitHub Desktop.
SSH 端口转发实现内网穿透

准备

假设你远程公网主机的 IP 是 123.45.67.89, 首先登录进你的主机

ssh [email protected] -p 22 -i '/your/ssh/key/file.key'

vim 编辑 ssh 服务器的配置文件

sudo vi /etc/ssh/sshd_config

将这个文件里的这些开关打开

AllowTcpForwarding yes
GatewayPorts yes

保存文件退出 vim。重启 sshd 服务

sudo systemctl restart sshd

至此,远程主机已经准备好了。这时退出远程主机回到本地命令行窗口。

实作

在打算暴露在互联网上的本地文件夹内,执行 python3 命令

python3 -m http.server --bind 127.0.0.1 4080

这就在本地创建了一个 http 文件服务器,监听在 80 端口。

新开一个命令行窗口,执行下列命令,就将本地文件服务器转发到了互联网上,访问端口是 8081

ssh [email protected] -p 22 -i '/your/ssh/key/file.key' -R 0.0.0.0:8081:127.0.0.1:4080

此时世界上任何联网设备上的 web 浏览器都可以访问你共享出去的文件

http://123.45.67.89:8081

当然这些文件不能是重要的机密文件,否则你损失大了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment