在进行某些网站的爬虫时,由于可能需要爬取的量特别大,比如像一些电商网站,这时我们可能加入一些分布式的东西,比如scrapy_redis组件实现了redis缓存的一些功能,但是可能由于一台主机的内存有限,任务量又太大,速率还是过慢,我们可能想到利用服务器和本机同时爬取,服务器端将爬取的内容存入主机的数据库,这时问题就来了,由于我的主机是处于路由器环境下,外网无法访问,如何能让外网连接到主机呢?经过一番查找和朋友的告知,可以利用ssh实现端口转发来达到目的。
什么是SSH?
SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。–百度百科
SSH由服务端和客户端组成,服务端是守护进程,在后台运行并相应来自客户端的连接请求。客户端包含一些ssh程序。
客户端和服务端建立请求之后,客户端就可以将一些数据转发到服务端上,那么我们就可以访问客户端来实现端口转发。
操作SSH
本地主机为Deepin系统,可以直接通过apt-get来安装
1
sudo apt-get install openssh-server
安装好后,利用ssh与服务器建立连接
1
ssh -fCNR 54321:localhost:54322 lkc@ip
- -f 后台执行ssh指令
- -C 允许压缩数据
- -N 不执行远程指令
- -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
- 54321 为外网服务器的可用端口号
- 54322 为内网主机的想要映射出去的端口号
- ip 为服务器地址
成功后我们就将内网的54322端口映射到了服务器的54321端口
关于ssh其他的用途在接下来有需要的时候会记录