ssh反向代理进行内网穿透

公网主机配置

  1. 修改sshd的配置文件,

    1
    nano /etc/ssh/sshd_config

    在最后面添加GatewayPorts yes,重启sshd

    1
    service sshd restart

    作用:设置反向代理的ip是0.0.0.0,而不是127.0.0.1

    内网主机配置

    命令格式

    1
    ssh -NfR <公网端口>:<要代理的ip>:<要代理的端口> <用户名>@公网主机ip (-i /path/to/privatekey)
    1
    2
    3
    -N:ssh不执行命令
    -f:后台执行
    -R:反向代理

    private key 应该时600权限
    查看是否启动,在公网主机上执行

    1
    2
    3
    4
    netstat -tnl|grep <公网端口>

    tcp 0 0 0.0.0.0:<公网端口> 0.0.0.0:* LISTEN
    tcp6 0 0 :::<公网端口> :::* LISTEN

    说明执行成功

    免密,稳定通道

  2. 免密
    在内网主机上执行

    1
    ssh-copy-id <用户名>@公网主机ip
  3. 稳定通道(两种方法)

    1. autossh
      1
      2
      apt-get install autossh
      autossh -M 2333 <公网端口>:<要代理的ip>:<要代理的端口> <用户名>@公网主机ip (-i /path/to/publickey)

    -M : 回显测试

    1. ssh心跳包

      • 单独客户设置(方法1)
        修改/etc/ssh/ssh_config,添加
      1
      2
      ServerAliveInterval 60
      ServerAliveCountMax 9999999999
      • 服务器设置(方法二){新客户端可以不用设置,服务器负责维护}
        1
        2
        3
        4
        sudo vim /etc/ssh/sshd_config
        # 添加
        ClientAliveInterval 30
        ClientAliveCountMax 6