上一篇提到的通过SSH服务连接树莓派,是在局域网内实现的,并不能远程控制,比如树莓派在实验室,你用手机在4G网的环境下也需要操作树莓派,则需要考虑使用SSH服务的端口转发功能,实现真正的远程控制。本篇所介绍的内容,建立在你有一个公网IP的基础之上,远程控制的实质是,你从手机或笔记本电脑发出SSH指令到公网IP的指定端口上,公网IP把收到的内容转发到位于你实验室的局域网内的树莓派中。

首先介绍一下Linux命令行中SSH的相关参数

ssh -fCNRL -p
-f 后台执行指令
-C 压缩数据
-N 不执行远程指令
-R 反向代理,将远程主机的某个端口转发到本地端指定机器的指定端口
-L 正向代理,将本机的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

上面所说的正向代理与反向代理正好相反,正向代理是把自己主机上指定端口收到的信息,转发到远程主机的指定端口上,自己的主机做SSH服务的服务器,远程主机做SSH的客户端;反向代理是将远程主机的指定端口收到的信息,转发的自己主机的指定端口上,自己的主机做客户端,远程主机做服务器。当然,如果把远程主机的IP地址与端口号改为本机的ip与端口号,那实现的就是本机从端口到端口的转发。

接下介绍一下正向代理与反向代理的标准套路

正向代理:ssh -fCNL [本机IP(可省略)]:[本机端口]:[远程主机IP]:[远程主机端口] [登陆远程主机的用户名@远程主机IP]
反向代理:ssh -fCNR [远程主机IP(可省略)]:[远程主机端口]:[本机IP]:[本机端口] [登陆远程主机的用户名@远程主机IP]

基础知识讲完之后,我们以我们的树莓派为例,讲一下反向代理的SSH端口转发。

硬件准备
  • 树莓派 3b+ 通过路由器联网
  • 公网IP 166.166.166.166(买一个VPS就可以搞到一个公网IP)
软件准备
  • JuiceSSH(一款手机SSH客户端,用电脑连接的话,还是直接用putty就好了)
操作流程
  • 使用VPS的9999端口,将其接收到的信息转发到树莓派的20端口,登录树莓派命令终端,在树莓派上输入以下指令。当然这个操作会让你输远程主机的密码,否则随随便便别人就可拿你主机上某个端口做代理了
ssh -fCNR 9999:localhost:22 root@166.166.166.166
  • 此时你登录VPS查看端口使用情况时,会发现VPS的9999端口已经处在监听状态了,人品好的话,可能这一步就可以了,但在这基础上,有很多需要完善的地方。
  • 首先当出现网络波动时,ssh连接会中断,而Linux有一个autossh,是可以在中断后自动重连的,因此我们用autossh取代ssh的反向代理,不巧的是,树莓派上没有autossh,我们需要先安装
sudo apt-get install autossh
  • autossh指令与ssh指令谁分相似,我们只需要在树莓派命令行终端上输入以下指令即可完成上述的相同操作
autossh -M 9998 -fCNR 9999:localhost:22 root@166.166.166.166
  • 后面的指令都是完全一样的,只有一个 -M 9998 ,这个参数的意思是当9999端口彻底不能转发了,在VPS上再开一个9998端口转发。
  • 接着每次输入ssh或autossh指令后,都需要先输密码,我们需要先完成免密登录,这个之后我会单独开一篇详细讲,大致就是现在树莓派上生成一对密钥,把公钥存在树莓派上,把私钥拷贝到VPS上即可完成免密登录。
  • 再然后,有的VPS主机的防火墙写的非常好,防火墙可能会阻止我们负责端口转发的端口接收信息,因此还需要让防火墙允许指定端口接收信息,这一部分主要讲Linux的防火墙,这个之后我还会再开一篇再详细讲。
  • 最后,因为树莓派不像VPS一直开着机,每次关机后,端口会自动关闭,因此需要我们在树莓派中写一个开机就运行的小脚本,这一部分涉及Linux的自动化运维,systemctl,rc.local之类的,之前简书上看到一篇不错的文章,我学习之后也会详细写一篇类似的详细讲。

用树莓派学Linux(三)--------SSH端口转发,跳出局域网的树莓派控制相关推荐

  1. 【转】实战 SSH 端口转发

    本文转自:http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html,至于有什么用,懂的懂! 实战 SSH 端口转发 通 ...

  2. 实战 SSH 端口转发

    2019独角兽企业重金招聘Python工程师标准>>> 第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻 ...

  3. [笔记]SSH 端口转发

    ssh 拥有很强大的能力,因为在服务器运维中一直在使用 ssh ,因此探讨 ssh 的功能能够在日常开发过程中受益颇多,这里描述下 ssh 的三种端口转发功能.灵活使用可以大大简化我们的开发过程. 准 ...

  4. 利用SSH端口转发功能实现X转发

    利用SSH端口转发功能实现X转发 分类: Linux2012-08-22 13:13203人阅读评论(0)收藏举报 sshserverwindowsdoslinuxxp SSH协议中有X转发协议.在S ...

  5. 通过 SSH 端口转发实现异地内网服务器互通

    异地内网服务器互通,直接通过路由器映射也可以做到,但是由于公网IP并不是固定的,因此这里介绍通过 SSH 端口转发,实现的固定IP访问 场景:内网机器 A.无固定IP机器B.固定IP机器C,其中 B ...

  6. 树莓派怎么学linux,树莓派使用入门用树莓派学 Linux

    树莓派使用入门用树莓派学 Linux 我们的<树莓派使用入门>的第四篇文章将进入到 Linux 命令行. 在本系列的 第三篇文章 中开始了我们的树莓派探索之旅,我分享了如何安装 Raspb ...

  7. 建立ssh隧道_快速掌握 SSH 端口转发,助力远程工作

    概述 ssh 是我们平时连接远程服务器必不可少的的工具,实际上,SSH 还同时提供了一个非常有用的功能,这就是端口转发. 将其他 TCP 端口的网络数据通过 SSH 链接来转发,这一过程有时也被叫做 ...

  8. linux修改ssh端口和禁止root远程登陆设置

    linux修改ssh端口22 vi /etc/ssh/ssh_config vi /etc/ssh/sshd_config 然后修改为port 8888 以root身份service sshd res ...

  9. linux 下ssh端口反弹,利用ssh隧道反弹shell

    说明 本文旨在分析rssh的源代码来学习利用ssh隧道来反弹shell.整个rssh只有1个347行的main文件,所以整体的逻辑结构也比较好分析.关于SSH端口转发的知识可以看实战SSH端口转发这篇 ...

最新文章

  1. 百度echarts使用
  2. python量化投资必背代码-重磅!我把自己耗费两年用Python写的量化投资代码开源了!...
  3. -jar参数运行应用时classpath的设置方法
  4. IEEE CSO 2009 修订版论文要求
  5. .NET中的UI自动化测试
  6. python位运算符_详细介绍Python语言中的按位运算符
  7. 三相pmsm矢量控制仿真模型_实时控制系统的时序模型及其在AUTOSAR系统仿真监控中的应用-Foundations4.1控制理论...
  8. angular--解决angular图片加载失败问题
  9. pip 安装 opencv
  10. wdatepicker不显示秒_「超逸酷玩」秒秒测智能健康日历如何正确使用电子墨水屏...
  11. 在VB中使用Linq To SQLite注意事项
  12. 在Windows10上安装3Ds Max完整教程
  13. hourglass论文_论文笔记 Stacked Hourglass Networks for Human Pose Estimation
  14. 211院校实习生三跨Java面经(头条、拼多多、华为、vivo)
  15. canvas图片画圆角
  16. HDTV入门扫盲篇HDTV入门
  17. 【感想】应试教育的死穴
  18. vs Code常用插件和快捷键(区分 win 和 Mac)
  19. 聊天宝不是我们想要社交产品
  20. Stata: 断点回归分析 (RDD) 文献和命令

热门文章

  1. FileStore omap的实现
  2. 乔治亚理工学院计算机专业,佐治亚理工学院计算机专业怎么样?
  3. Latex 加下角标
  4. 《数据结构》-图的邻接表表示法(四)
  5. 微信mars学习笔记
  6. unity hdrp的TAA
  7. 今日头条适配方案_ 今日头条大改版,小程序强势登场
  8. 今日头条如何运营,今日头条怎么运营好,今日头条运营技巧
  9. 上帝视角实现 引用大神,不是原创
  10. MySQL MGR 安装