45

ssh端口转发的三种方式

 4 years ago
source link: https://www.tuicool.com/articles/baYVNrf
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ssh是我使用最频繁的两个命令行工具之一(另一个则必须是vim)。有了ssh,我可以远程处理各种可能出现的问题而无需肉身到现场。

这几天teamviewer被黑的事情影响挺大,于是由远程控制想到了内网穿透,自然而然的想到了ssh的端口转发也能实现内网穿透。再细想一下,发现 ssh隧道 、或者说 端口转发 ,竟然实现了 正向代理反向代理内网穿透 三种常用的网络功能,更佩服其功能的强大和使用中的便利。

ssh有三种端口转发模式,本文一一对其做简要介绍。

本地转发

本地端口转发( Local Port Forwarding ),是将本地主机某个端口流量转发到远程主机的指定端口。其命令行语法是: -L [bind_address]:localport:[remote_host]:remote_port 。”-L”即“local”的首字母,类似的远程转发的”-R”是“remote”的首字母,动态转发的“-D”是“dynamic”的首字母,很好记。

举一个例子说明本地转发的使用场景。

CentOS 7安装GUI界面及远程连接 一文中介绍了安装vnc服务并开启端口访问。在实际中,暴露出来的59xx端口每天都会源源不断的受到自动化脚本的爆破攻击。如果你的vnc和登录用户使用弱密码或字典密码,主机安全将受到极大威胁。这种情形下该如何防护?

一种简单安全的防护方法是:使用iptables/firewalld关闭端口的外网访问,有连接需求时用 ssh 隧道转发端口:

ssh -L5901:5901 username@host

该命令中将本地的5901端口通过 ssh隧道 转发到远程主机的5901端口,远程连接时输入localhost或者127.0.0.1和5901端口便连到了远程主机的5901端口。通过iptables和ssh的本地转发,实现了他人无法连接,只有自己才能访问的目的。

需要注意的是“-L”选项中的“远程主机”并不特指连接过去的机器(默认是连接上的机器),可以是任何一主机。例如可以将本机的8080端口流量转发到facebook.com的80端口:

ssh -L8080:facebook.com:80 username@host

远程转发

远程端口转发( Remote Port Forwarding ),是将远程主机某个端口转发到远程主机的指定端口。其命令行语法是: -R [bind_address]:port:[local_host]:local_port

远程转发最常用的功能是 内网穿透 。有一个公网ip的主机,便可以借助ssh隧道的远程转发实现内网渗透,达到外网访问内网资源的目的。需要注意的是ssh远程转发 默认只能绑定远程主机的本地地址 ,即127.0.0.1。如果想要监听来自其他主机的连接,需要修改远程主机ssh的配置,将”GatewayPorts”改成“yes”,重启ssh后生效。

一个将远程的8080端口流量转发到本地80web端口的示例:

ssh -R0.0.0.0:8080:80 username@host

通过远程转发,访问公网ip主机的8080端口便是访问内网web主机的80端口,这样就实现了内网穿透。

动态转发

无论本地转发还是远程转发,都需要指定本地和远程主机的端口。动态转发( Dynamic Port Forwarding )则摆脱这种限制,只绑定本地端口,远程主机和端口由发起的请求决定。动态转发的语法是:”-D bind_address:port”,一个转发示例:

ssh -D 8080 username@host

该命令让ssh监听本地8080端口,经过8080端口的流量都通过ssh隧道由远程服务器代为请求,从而达到获取被屏蔽资源、隐藏真实身份的目的。

动态转发实际上实现了正向代理功能,因此可以用来科学上网。本地转发也可以做正向代理,但要对每一个请求的主机和端口做转发,比较繁琐,实践中不会这么用。

其它

kill

Recommend

  • 27
    • www.tuicool.com 4 years ago
    • Cache

    SSH 端口转发教程

    SSH 端口转发教程 对于开发者来说,ssh 是一个必备的工具,用来登录服务器。 但是,它还有一大用途,就是作为加密通信的中介,充当两台服务器之间的通信加密跳板。这个功能称为端口转发(port forwarding),又称 ssh...

  • 32
    • www.tlanyan.me 4 years ago
    • Cache

    ssh端口转发的三种方式 - tlanyan

    ssh端口转发的三种方式ssh是我使用最频繁的两个命令行工具之一(另一个则必须是vim)。有了ssh,我可以远程处理各种可能出现的问题而无需肉身到现场。这几天teamviewer被黑的事情影响挺大,于是由远程控制想到了内网穿透,自...

  • 25
    • www.cnblogs.com 3 years ago
    • Cache

    ssh端口转发

    假设现在有两台服务器client1,client2,他们直接不能直接相互通信,但是他们均能连接上第三台服务器balance,我们可以在client1,client2和balance三台机器之间建立ssh隧道来让client1和client2实现通信。 ssh端口转发有三种实...

  • 10
    • beginor.github.io 3 years ago
    • Cache

    SSH 端口转发小结

    SSH 端口转发小结 Linux 的 SSH 服务不仅仅能够远程登录和管理,还可以在本地计算机和服务器之间建立 TCP 通道, 实现代理、内网穿透、暴露内网服务等功能,简单可靠。 动态端口转发 将向本地指定端口发送的请求通过 SSH...

  • 7
    • abcdxyzk.github.io 3 years ago
    • Cache

    SSH端口转发 及 SSH代理

    SSH端口转发 及 SSH代理 2015-04-09 23:06:00 SSH端口转发 假设A、B为内网机,C为可登录公网机。那么A连B过程为: 假设 A、B、C 的ssh端口分别为portA、portB、portC。 1. 远程转发-R, 远...

  • 6
    • www.lujun9972.win 2 years ago
    • Cache

    ssh端口转发说明

    ssh端口转发说明 SSH端口转发可以使两台机器之间通过SSH协议来通讯,这项能力可以让两个不支持SSL加密的应用之间的通讯也变得安全。 此外,ssh端口转发也常用于将位于内部网络无法路由的机器暴露给外部使用。 SSH端口转发主要有两种:本地...

  • 5
    • halfcoke.github.io 2 years ago
    • Cache

    SSH端口转发详解

    SSH端口转发详解SSH端口转发详解SSH端口转发(隧道)可以建立SSH通道,并将TCP链接放到这个通道中。man ssh选项及参数解释首先我们通过man...

  • 3
    • harttle.land 2 years ago
    • Cache

    SSH 配置端口转发

    SSH 隧道或 SSH 端口转发可以用来在客户端和服务器之间建立一个加密的 SSH 连接,通过它来把本地流量转发到服务器端,或者把服务器端流量转发到本地。比如从本地访问服务器上的 MySQL 管理后台,或者把本地的串流、SMB、CIFS 等服务暴露在服务器所在的公网。本文将介...

  • 2
    • blog.p2hp.com 1 year ago
    • Cache

    SSH的三种端口转发

    本地转发,顾名思义就是把本地主机端口转发到远程主机端口。 ssh -L 本地主机端口:远程主机:远程主机端口 举例:ssh -L 50000:www.google.com:80 user@host 当成功执行上面的命令之后,访问本地的50000端口,就等同...

  • 2
    • nicksxs.me 1 year ago
    • Cache

    ssh 小技巧-端口转发

    Nicksxs's BlogWhat hurts more, the pain of hard work or the pain of regret?ssh 小技巧-端口转发我们在使...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK