期待你的分享

0%

如何通过外网访问内网服务

在进行某些网站的爬虫时,由于可能需要爬取的量特别大,比如像一些电商网站,这时我们可能加入一些分布式的东西,比如scrapy_redis组件实现了redis缓存的一些功能,但是可能由于一台主机的内存有限,任务量又太大,速率还是过慢,我们可能想到利用服务器和本机同时爬取,服务器端将爬取的内容存入主机的数据库,这时问题就来了,由于我的主机是处于路由器环境下,外网无法访问,如何能让外网连接到主机呢?经过一番查找和朋友的告知,可以利用ssh实现端口转发来达到目的。

什么是SSH?

SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。–百度百科

SSH由服务端和客户端组成,服务端是守护进程,在后台运行并相应来自客户端的连接请求。客户端包含一些ssh程序。

客户端和服务端建立请求之后,客户端就可以将一些数据转发到服务端上,那么我们就可以访问客户端来实现端口转发。

操作SSH

  1. 本地主机为Deepin系统,可以直接通过apt-get来安装

    1
    $ sudo apt-get install openssh-server
  2. 安装好后,利用ssh与服务器建立连接

    1
    $ ssh -fCNR 54321:localhost:54322 lkc@ip
    • -f 后台执行ssh指令
    • -C 允许压缩数据
    • -N 不执行远程指令
    • -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
    • 54321 为外网服务器的可用端口号
    • 54322 为内网主机的想要映射出去的端口号
    • ip 为服务器地址
  3. 成功后我们就将内网的54322端口映射到了服务器的54321端口

关于ssh其他的用途在接下来有需要的时候会记录