SSH 端口转发(本地转发与远程转发)

什么是 SSH 端口转发,又名 SSH 隧道?

SSH端口转发处于机构SSH用于从所述客户端机器隧道应用程序的端口到服务器计算机上,或反之亦然。它可用于为遗留应用程序添加加密通过防火墙,并且一些系统管理员和 IT 专业人员使用它从他们的家用机器打开进入内部网络的后门。黑客和恶意软件也可以滥用它来打开从 Internet 到内部网络的访问。有关更广泛的概述,请参阅SSH 隧道页面。

本地转发

本地转发用于将端口从客户端机器转发到服务器机器。基本上,SSH 客户端侦听配置端口上的连接,当它接收到连接时,它会将连接通过隧道连接到SSH 服务器。服务器连接到配置的目标端口,可能在与 SSH 服务器不同的机器上。

本地端口转发的典型用途包括:

  • 通过跳转服务器隧道会话和文件传输
  • 从外部连接到内部网络上的服务
  • 通过 Internet 连接到远程文件共享

相当多的组织为所有传入的 SSH 访问通过一个单一的跳转服务器。服务器可能是一个标准的 Linux/Unix 机器,通常带有一些额外的加固、入侵检测和/或日志记录,或者它可能是一个商业跳转服务器解决方案。

一旦连接经过身份验证,许多跳转服务器允许传入端口转发。这种端口转发很方便,因为它允许精通技术的用户非常透明地使用内部资源。例如,他们可能会将本地机器上的端口转发到企业内部网 Web 服务器、内部邮件服务器的IMAP端口、本地文件服务器的 445 和 139 端口、打印机、版本控制存储库或几乎内部网络上的任何其他系统。通常,该端口通过隧道连接到内部机器上的 SSH 端口。

OpenSSH 中,使用以下-L选项配置本地端口转发:

    ssh -L 80:intra.example.com:80 gw.example.com

此示例打开与gw.example.com跳转服务器的连接,并将本地计算机上到端口 80 的任何连接转发到 上的端口 80 intra.example.com

默认情况下,任何人(甚至在不同的机器上)都可以连接到 SSH 客户端机器上的指定端口。但是,这可以通过提供绑定地址来限制在同一主机上的程序:

    ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com

OpenSSH 客户端配置文件中LocalForward选项可用于配置转发,而无需在命令行中指定。

远程转发

在 OpenSSH 中,远程 SSH 端口转发是使用该-R选项指定的。例如:

    ssh -R 8080:localhost:80 public.example.com

这允许远程服务器上的任何人连接到远程服务器上的 TCP 端口 8080。然后该连接将通过隧道返回到客户端主机,然后客户端与 80 端口建立 TCP 连接localhost。可以使用任何其他主机名或 IP 地址来代替localhost指定要连接的主机。

这个特定示例对于让外部人员访问内部 Web 服务器非常有用。或者将内部 Web 应用程序暴露给公共 Internet。这可以由在家工作的员工或攻击者完成。

默认情况下,OpenSSH 只允许从服务器主机连接到远程转发端口。但是,可以使用GatewayPorts服务器配置文件sshd_config 中的选项来控制它。以下替代方案是可能的:

    GatewayPorts no

这可以防止从服务器计算机外部连接到转发端口。

    GatewayPorts yes

这允许任何人连接到转发的端口。如果服务器位于公共 Internet 上,则 Internet 上的任何人都可以连接到该端口。

    GatewayPorts clientspecified

这意味着客户端可以指定允许连接到端口的 IP 地址。其语法是:

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

在此示例中,仅52.194.1.73允许从 IP 地址到端口 8080 的连接。

OpenSSH 还允许将转发的远程端口指定为 0。在这种情况下,服务器将动态分配一个端口并报告给客户端。与该-O forward选项一起使用时,客户端会将分配的端口号打印到标准输出。

Ref: https://www.ssh.com/academy/ssh/tunneling/example

 

出处:https://blog.csdn.net/leopardsaga/article/details/122149242

posted on 2022-06-02 16:14  jack_Meng  阅读(2095)  评论(0编辑  收藏  举报

导航