ssh(secure shell)是一种对数据进行加密安全传输的协议。利用ssh工具可以非常方便的登录远程提供有ssh服务的主机,也可以很方便的进行文件传输。利用 ssh tunnel 可以进行端口转发(port forwarding), 它在ssh连接上建立一个加密的通道。创建了ssh tunnel之后,可以突破一些网络的限制访问不能直接访问的资源。
ssh tunnel分为三种,本地(L),远程(R)和动态(D)。
比如sshserver上服务监听在127.0.0.1:80上,并没有暴露80端口给网络,可以通过隧道转发到本机端口进行访问.

man ssh
#-L [bind_address:]port:host:hostport
#Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.#-R  [bind_address:]port:host:hostport
#Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side. #-N      Do not execute a remote command.  This is useful for just forwarding ports (protocol version 2 only).
#-T      Disable pseudo-terminal allocation.
#-N, -T这个两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作。#-f  让ssh后台运行


可能应用的场景

本地端口映射 -L

比如ssh服务器host1上服务监听在127.0.0.1:80上,并没有暴露80端口给网络,可以通过隧道转发到本机端口进行访问.

ssh -NfL 9000:localhost:80  host1 #默认绑定地址是127.0.0.1
ssh -NfL 0.0.0.0:9000:localhost:80  host1 #监听0.0.0.0,将端口暴露给网络
这样一来,我们只要连接本地的9000端口,就等于连上了host1本地的80端口。

远程端口转发 -R

既然”本地端口转发”是指绑定本地端口的转发,那么”远程端口转发”(remote forwarding)当然是指绑定远程端口的转发。
比如在家里想访问到公司里面的电脑,由于都不是在同一个局域网中不能直接访问,需要一台外网服务器remoteHost

#在公司电脑上,将本地的ssh服务端口映射到远程机器的9022端口。
ssh -NfR 9022:localhost:22 remoteHost
#在家里登录外网服务器后,ssh连接公司电脑.
ssh -p 9022 localhost

动态端口映射 -D

因为防火墙等因素本地机器不能访问某些资源,但是远程ssh主机可以访问。你可以从本地ssh到远程那台主机。这时你希望用远程主机做代理以方便本地的网络访问,因为最先介绍的本地端口映射只能对指明的个别网站进行访问。

ssh -NfD 9000 remoteHost

通过SSH建立的SOCKS服务器使用的是SOCKS5协议,在为应用程序设置SOCKS代理的时候要特别注意。
接着在浏览器上设置Socket代理:地址是localhost,端口是9000。从此以后,你的访问都是加密的了,而且走的是远程主机,IP变为了远程主机的IP,一些不能直接访问的资源通过这个代理可以访问。

参照:

  • SSH Tunnel (port forwarding) 的一些应用
  • https://en.wikipedia.org/wiki/Tunneling_protocol
  • SSH隧道技术简介
  • SSH原理与运用(二):远程操作与端口转发

SSH Tunnel隧道相关推荐

  1. SSH Tunnel隧道详解

    SSH Tunnel隧道详解 ssh tunnel分为三种 本地 -L 远程 -R 动态 -D 参考:https://blog.csdn.net/chenjh213/article/details/4 ...

  2. SSH tunnel 隧道技术

    常用的隧道技术有三种: 本地(L), 远程(R)和动态端口转发(D) 本文的例子是: 客户服务器A内网,部署了Apollo 并且有可视化界面 客户服务器B:一台跳板机 可以连通服务器A 并且带有公网I ...

  3. 使用SSH反向隧道进行内网穿透

    这篇文章主要介绍了如何利用SSH 反向隧道穿透NAT,并演示了如何维持一条稳定的SSH 隧道. 假设有机器A 和B,A 有公网IP,B 位于NAT 之后并无可用的端口转发,现在想由A 主动向B 发起S ...

  4. 使用vscode remote ssh功能远程连接服务器或树莓派时,报错Setting up SSH tunnel的终极解决办法,全网仅此一份

    当你想用vscode remote ssh 功能远程开发linux服务器.树莓派时,.vscode-server文件创建完成,但是一直显示卡在 Setting up SSH Host <你的用户 ...

  5. SSH tunnel tips

    转自:http://blog.pluskid.org/?p=369 从我两三年前接触 SSH 的时候我就在文档上见过 SSH tunnel 相关的东西,然而当时没有怎么看明白,也就一直没有深究,直到最 ...

  6. PostgreSQL performance test use ssh tunnel

    前面一篇BLOG介绍了PostgreSQL ssl数据加密的性能, 相比未加密性能下降得比较厉害. http://blog.163.com/digoal@126/blog/static/1638770 ...

  7. NestJS 6.x折腾记- (0) 开胃菜, TypeORM 连接远程的MySQL(ssh tunnel)及Linux信息过滤裁切基础

    前言 昨天发现的框架,看了下官方文档,号称Nodejs版本的spring(java) 开发模式有ng6既视感,这对有ng经验的小伙伴来说,莫名的亲切- 适合尝尝鲜,目前有1W+ star, 上正式线我 ...

  8. Workbench Could not connect the SSH Tunnel Authentication error

    1. 问题现象 平日正常使用的 Workbench 在重启电脑之后发现无法连接到对应的数据库,workbench log显示 SSH tunnel]: Authentication error ope ...

  9. ssh远程工具_Rsync如何利用SSH加密隧道同步文件

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解Linux系统中的Rsync如何利用SSH ...

最新文章

  1. NLP模型BERT和经典数据集!
  2. Hyperledger子项目
  3. 用户运营平台产品设计指南
  4. 【大连】2021年下半年软考报考时间及通知
  5. android动画效果 translate,Android利用translate、scale、alpha、rotate实现动画效果
  6. mysql 表丢失_Mysql数据库备份 部分数据表丢失 Mysql table doesn't exist 解决
  7. [css] 有用过scss和sass吗?说说它们之间的区别是什么?
  8. select时尽可能少使用as对性能很有好处
  9. Python爬取2900条数据,深度揭秘到底哪种防脱发洗发水最受欢迎?
  10. View的滚动原理简单解析(二)
  11. Jquery 提交表单
  12. DS18B20驱动详解(蓝桥杯单片机)
  13. Docx4j简单学习
  14. Python编程--目标IP地址段主机指定端口状态扫描
  15. Java 静态代理
  16. atto软件测试速度,基于ATTO的传输速度VS文件大小测试
  17. 算法题 高斯消元解线性方程组(Python)
  18. 中职学计算机专业考本科难吗,国际本科难不难(中职考本科难不难)
  19. 更改360极速浏览器默认安装路径
  20. win10电脑360调用不到JAVA,windows10系统下360浏览器打不开网页如何解决

热门文章

  1. 电容笔和触控笔有什么区别?第三方电容笔了解下
  2. 校验手机号正则,支持166及199等手机号
  3. 磁盘管理器/磁盘管理工具给电脑硬盘分区
  4. 面向95后的营销和增长,你需要知道这些( ゜- ゜)つロ 乾杯
  5. 国产银河数字式电子计算机是属于什么,邱桂香老师-计算机基础.ppt
  6. 西门子1200PLC程序SCL数控G代码功能块源文件 S7-1200PLC程序SCL数控G代码功能块源文件
  7. 用汇编语言写51单片机程序开头为什么一般都这样:ORG 0000H LJMP MAIN ORG 0030H
  8. Mp3:最后的免费“午餐”
  9. (七)通过pygame来设置飞机大战中 敌机 的速度、位置等
  10. Sequence-to-Sequence Model (Seq2Seq)