Ssh穿透和反向代理
内网穿透配置文档
本文档介绍了如何通过 SSH 反向代理实现内网穿透,使得内网主机(A)可以通过具有公网 IP 的服务器(B)访问外网服务(如 github.com
)。
1. 环境
设备 | 描述 |
---|---|
A | 内网主机,具有 Socket5 代理,无公网 IP |
B | 国内公网 IP 服务器 |
2. 配置 SSH 免密登录
A 上操作:
-
生成 SSH 密钥对:
Terminal window ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -
查看并复制公钥:
Terminal window cat ~/.ssh/id_rsa.pub
B 上操作:
-
将 A 的公钥添加到 B 的
authorized_keys
文件中:Terminal window vi ~/.ssh/authorized_keys -
将 A 上
cat
出来的公钥内容粘贴到authorized_keys
文件中并保存。
3. 修改 SSHD 参数
在 A 和 B 上都需要修改 SSH 配置,以允许远程端口转发。
A/B 上操作:
-
编辑 SSH 配置文件:
Terminal window echo 'GatewayPorts yes' >> /etc/ssh/sshd_config -
重启 SSH 服务:
Terminal window service ssh restart
4. 启动 Autossh 反向代理
A 上操作:
使用 autossh
启动反向代理,将 B 机器的 1088 端口转发到 A 机器的 74.211.103.101:1088。
autossh -p 25680 -M 1089 -fCNR *:1088:74.211.103.101:1088 219.128.50.229
参数说明:
-f
:后台运行。-C
:启用压缩。-N
:不执行远程命令,仅用于端口转发。-R
:远程端口转发。*:1088:74.211.103.101:1088
:在 B 机器上监听所有 IP 的 1088 端口,并将其转发到 A 机器的74.211.103.101:1088
。219.128.50.229
:B 机器的公网 IP 地址。-M 1089
:指定autossh
的监控端口。
5. 使用
配置代理:
Firefox:
- 安装
Proxy Toggle
扩展。 - 配置代理:
- IP:B 机器的公网 IP 地址。
- 端口:1088。
- 用户名和密码:根据实际情况配置。
Telegram (TG):
- 在 TG 中配置代理:
- IP:B 机器的公网 IP 地址。
- 端口:1088。
- 用户名和密码:根据实际情况配置。
效果:
通过上述配置,A 主机可以通过 B 机器的公网 IP 访问外网服务,例如 github.com
。
注意事项
- 安全性:确保 B 机器的 SSH 服务配置安全,避免未授权访问。
- 防火墙:确保 B 机器的防火墙允许 1088 端口的流量通过。
- 稳定性:
autossh
可以自动重连,但仍需监控代理服务的运行状态。 - 代理协议:如果需要更高的安全性,可以考虑使用
SOCKS5
或HTTPS
代理。
通过以上步骤,您可以成功实现内网穿透,解决内网主机访问外网服务的问题。