Skip to content

Ssh穿透和反向代理

内网穿透配置文档

本文档介绍了如何通过 SSH 反向代理实现内网穿透,使得内网主机(A)可以通过具有公网 IP 的服务器(B)访问外网服务(如 github.com)。


1. 环境

设备描述
A内网主机,具有 Socket5 代理,无公网 IP
B国内公网 IP 服务器

2. 配置 SSH 免密登录

A 上操作:

  1. 生成 SSH 密钥对:

    Terminal window
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  2. 查看并复制公钥:

    Terminal window
    cat ~/.ssh/id_rsa.pub

B 上操作:

  1. 将 A 的公钥添加到 B 的 authorized_keys 文件中:

    Terminal window
    vi ~/.ssh/authorized_keys
  2. 将 A 上 cat 出来的公钥内容粘贴到 authorized_keys 文件中并保存。


3. 修改 SSHD 参数

在 A 和 B 上都需要修改 SSH 配置,以允许远程端口转发。

A/B 上操作:

  1. 编辑 SSH 配置文件:

    Terminal window
    echo 'GatewayPorts yes' >> /etc/ssh/sshd_config
  2. 重启 SSH 服务:

    Terminal window
    service ssh restart

4. 启动 Autossh 反向代理

A 上操作:

使用 autossh 启动反向代理,将 B 机器的 1088 端口转发到 A 机器的 74.211.103.101:1088。

Terminal window
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:

  1. 安装 Proxy Toggle 扩展。
  2. 配置代理:
    • IP:B 机器的公网 IP 地址。
    • 端口:1088。
    • 用户名和密码:根据实际情况配置。

Telegram (TG):

  1. 在 TG 中配置代理:
    • IP:B 机器的公网 IP 地址。
    • 端口:1088。
    • 用户名和密码:根据实际情况配置。

效果:

通过上述配置,A 主机可以通过 B 机器的公网 IP 访问外网服务,例如 github.com


注意事项

  1. 安全性:确保 B 机器的 SSH 服务配置安全,避免未授权访问。
  2. 防火墙:确保 B 机器的防火墙允许 1088 端口的流量通过。
  3. 稳定性autossh 可以自动重连,但仍需监控代理服务的运行状态。
  4. 代理协议:如果需要更高的安全性,可以考虑使用 SOCKS5HTTPS 代理。

通过以上步骤,您可以成功实现内网穿透,解决内网主机访问外网服务的问题。