美文网首页Linux
从外网 SSH 进局域网,反向代理+正向代理

从外网 SSH 进局域网,反向代理+正向代理

作者: 郭盖华 | 来源:发表于2016-12-24 18:55 被阅读403次

    因为工作需要,需要回家后,能够访问公司局域网的服务器。因此就搞了一个SSH的代理。

    机器 IP 访问
    公司内网服务器 A 192.168.1.1 可以访问外网
    公网服务器 B xxx.xxx.com A可访问到
    任意可以访问B的主机 C --- ---

    实施步骤

    • 在A上面实现反向代理
    ssh -fCNR <port1>:localhost:22 usr_b@xxx.xxx.com
    

    <port1> 为 B 上端口,用来与 A 机器上的22端口绑定。

    • 在B上实现正向代理
    ssh -fCNL *:<port2>:localhost:<port1> localhost
    

    <port2> 为本地转发端口,用以和外网通信,并将数据转发到 <port1>。其中的*表示接受来自任意机器的访问。

    • 从C上访问A
    ssh -p <port2> user_a@xxx.xxx.com
    

    为了让连接能够稳定可靠,可以使用autossh在网络连接断开时,自动重连,在A上执行下面的语句:

    autossh -N -f -i /home/user_a/.ssh/id_rsa -y -o BatchMode=yes -R <port2>:localhost:22 usr_b@xxx.xxx.com
    

    为了更加保险,在远端电脑重启时,自动启动autossh,可以在/etc/rc.local里面添加如下内容:

    su - user_a -c "autossh -N -f -i /home/user_a/.ssh/id_rsa -y -o BatchMode=yes -R <port2>:localhost:22 usr_b@xxx.xxx.com"
    

    其中,user_a是A上的用户,且要求B上,已经有了A主机上用户user_a的公钥,这里不在详细描述。

    附:SSH 参数解释

    -f 后台运行
    -C 允许压缩数据
    -N 不执行任何命令
    -R 将端口绑定到远程服务器,反向代理
    -L 将端口绑定到本地客户端,正向代理
    

    相关文章

      网友评论

        本文标题:从外网 SSH 进局域网,反向代理+正向代理

        本文链接:https://www.haomeiwen.com/subject/kjtrvttx.html