美文网首页互联网科技
SSH隧道及其使用

SSH隧道及其使用

作者: 大蟒传奇 | 来源:发表于2018-12-26 11:11 被阅读3次

什么是SSH隧道

SSH隧道是一种通过加密的SSH连接传输任意网络数据的方法。它可以用来为任何应用程序添加加密通道;也可以用它来实现VPN和跨防火墙访问局域网的服务。

SSH是一个通过不受信任的网络进行安全远程登录和文件传输的标准。通过SSH隧道传输TCP/IP数据,它还提供了一种使用端口转发保护任何给定应用程序数据流量的方法。采用了这种方法后,应用程序的数据流量都会走SSH的加密连接,从而不会被窃听或拦截。对于本身不支持加密的应用程序来说,使用SSH隧道可以很方便地添加网络安全性。

上图简要介绍了SSH隧道。不可信网络的安全连接建立在SSH客户端和SSH服务器之间。这个连接是加密的,可用于保护机密性和完整性,并且可以对通信方进行身份验证。

客户端应用使用SSH来连接到服务端应用。隧道启用后

  1. 应用程序连接到SSH客户端所在的本地主机上的端口。
  2. SSH客户端通过加密隧道将数据转发到SSH服务端。
  3. SSH服务端连接到应用程序服务器,这个服务器和SSH服务端在同一个主机上,或者在相同的数据中心中。

通过上面的转发,无需修改应用程序,就能保证应用程序客户端和服务端通信的安全。

这个方式的缺点是,任何能登陆服务器的用户都可以启用端口转发。内部IT人员经常在他们的家里的机器或云上的服务器上启用转发,从而能在企业内网中,从工作机器上访问家里的机器或云上的服务器。黑客或恶意软件会利用类似的方式在局域网中留一个后门。还可以在多个设备上开启隧道,攻击者通过在这些隧道中跳来跳去来隐藏踪迹。

两种转发方式

本地转发

本地代理用于将端口从客户端计算机转发到服务端计算机。SSH客户端监听来自某个端口的连接,当它收到连接时,将请求通过隧道转发到SSH服务器;然后SSH服务器将请求转到目标端口。

本地转发比较常见的场景有:

  1. 通过跳板机登陆远程服务器或传输文件
  2. 从外部连接到内部网络上的服务
  3. 远程文件共享

在OpenSSH中,使用-L参数开启本地转发

ssh -L p1(localport):server:p2(remoteport) remote

这个命令工作的过程如下图

默认情况下,其他的机器都能够连接到本地的SSH客户端指定的端口;为了安全起见,一般绑定地址,将连接来源限制在同一主机的程序

ssh -L 127.0.0.1:p1:server:p2 remote

也可以在OpenSSH客户端的配置中配置本地转发,这样就不用单独输入命令行了

比如在~/.ssh/config中这样写

Host serverfw
HostName remote
User username
LocalForward p1 server:p2

这样在开启转发的时候只需要输入ssh serverfw而不用再输入完整的命令了

远程转发

如果希望通过本地计算机,让远程服务器remote可以连接到server上的服务,可以使用SSH远程转发。

使用SSH远程转发一个典型的用途是,在企业内部开一个后门,让公网的计算机可以访问到企业的某个内部服务,这个是有一定风险的,使用的时候需要特别小心。

在OpenSSH中,远程转发通过-R参数开启,在本地计算机上输入命令

ssh -R p1(remoteport):server:p2(targetport) remote

上面命令的工作过程如下

默认情况下,OpenSSH仅允许从服务器主机(上图的remote)连接到远程转发端口server:p2,如果想要其他的主机也能连上server:p2,需要在sshd_config文件中设置

GatewayPorts yes

如果需要指定来源IP,可以将配置改为

GatewayPorts clientspecified

比如

ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com

将只允许52.192.1.73到端口8080的连接

OpenSSH的远程转发支持多个规则,比如

ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net

同样的,可以在~/.ssh/config配置host,比如

Host exportme
HostName remote
RemoteForward remoteport server:targetport

相关文章

  • SSH隧道及其使用

    什么是SSH隧道 SSH隧道是一种通过加密的SSH连接传输任意网络数据的方法。它可以用来为任何应用程序添加加密通道...

  • SSH key的生成及使用

    SSH key的生成及使用 SSH key生成及其使用 一、检查是否已经存在ssh key 通常sshkey会默认...

  • ssh的代理和端口转发机制介绍

    本文介绍通过ssh建立隧道的三种方式。 ssh的隧道均通过端口转发来实现,包括三种模式: 本地端口转发,使用-L参...

  • SSH隧道技术

    SSH隧道(即SSH代理、端口转发),现在linux默认支持的就是ssh登录。对于SSH隧道,如果之前没接触过,只...

  • 通过SSH隧道配置http代理

    如何配置SSH隧道,请参考使用SSH隧道通过海外服务器访问外部网络,本文在前一篇的基础上继续探索Window上So...

  • 使用ssh和云主机进行内网穿透

    使用ssh的隧道功能,进行端口转发。假设当前场景有三台主机: 如果想从 mbp 通过ssh任意访问localhom...

  • ssh隧道

    一.概述 由于工作原因,总是要连接到各种不能直接访问的环境,所以大部分环境必须要使用ssh隧道进行访问。其实只是简...

  • ssh隧道

    ssh -TND 9999 piperck@target_server 端口后面接目标ssh到的目标主机 即可建立...

  • ssh隧道

    ssh隧道的通讯过程是加密的,在内网渗透中,可以在一定程度上保护自己不被安全设备发现,以下介绍ssh隧道的3种工作...

  • ssh隧道用于调试

    相关阅读 SSH隧道与端口转发及内网渗透 | 个人博客 SSH隧道技术----端口转发,socket代理 | 博客...

网友评论

    本文标题:SSH隧道及其使用

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