莫张周刘王 发表于 2024-9-24 12:36:19

ssh如何实现端口转发

SSH 可以通过端口转发(SSH Tunneling)实现将当地或长途的端口映射到另一台机器的端口。这通常用于在不直接暴露端口的环境下,通过 SSH 隧道访问某些资源。SSH 支持三种类型的端口转发:当地端口转发、长途端口转发 和 动态端口转发。下面详细介绍这三种方式:
1. 当地端口转发(Local Port Forwarding)

当地端口转发允许你将当地计算机的某个端口通过 SSH 隧道转发到长途服务器上的指定端口。常用于通过堡垒机访问内部网络中的服务。
语法:

ssh -L [本地端口]:[目标地址]:[目标端口] [用户名]@[远程服务器] 示例:

假设你需要通过 SSH 访问内部网络中的 10.10.101.88:8080,但你只能通过 SSH 登录到堡垒机 bastion_host。你可以在当地创建一个端口转发,通过当地的 8080 端口访问内部服务。
ssh -L 8080:10.10.101.88:8080 your_username@bastion_host 表明:


[*]-L 8080:10.10.101.88:8080:将当地的 8080 端口转发到堡垒机可访问的 10.10.101.88:8080。
[*]your_username@bastion_host:SSH 登录到堡垒机。
完成后,你可以通过当地的 http://localhost:8080 访问 10.10.101.88:8080 的服务。
2. 长途端口转发(Remote Port Forwarding)

长途端口转发允许你将长途服务器的某个端口转发到当地计算机或其他机器上的某个端口。这种方式常用于让长途机器访问当地的服务。
语法:

ssh -R [远程端口]:[目标地址]:[目标端口] [用户名]@[远程服务器] 示例:

假设你想将你当地的 Web 服务器(当地的 8080 端口)暴露给长途服务器 remote_host,使得 remote_host 上的用户可以通过访问 localhost:8080 来使用你当地的服务。
ssh -R 8080:localhost:8080 your_username@remote_host 表明:


[*]-R 8080:localhost:8080:将长途服务器的 8080 端口转发到当地的 8080 端口。
[*]your_username@remote_host:SSH 登录到长途服务器。
这样,remote_host 上的用户可以通过访问 http://localhost:8080 访问你当地的服务。
3. 动态端口转发(Dynamic Port Forwarding)

动态端口转发类似于当地端口转发,但它提供了更多灵活性,可以通过 SOCKS 署理将任何请求转发到指定的服务器。这种方式常用于创建署理服务器。
语法:

ssh -D [本地端口] [用户名]@[远程服务器] 示例:

假设你想通过长途服务器 remote_host 创建一个 SOCKS 署理,允许通过该署理访问多个目标服务器。可以使用如下命令:
ssh -D 1080 your_username@remote_host 表明:


[*]-D 1080:在当地启动一个 SOCKS 署理服务器,监听 1080 端口。
[*]your_username@remote_host:SSH 登录到长途服务器。
完成后,配置浏览器或其他工具使用 localhost:1080 作为 SOCKS 署理,你就可以通过该署理访问长途服务器所能访问的所有资源。
常用选项:



[*]-N:只创建毗连,不执行长途命令,适用于仅需要端口转发的场景。 ssh -N -L 8080:10.10.101.88:8080 your_username@bastion_host
[*]-f:将 SSH 历程放入后台运行,适用于长时间运行的端口转发。 ssh -f -N -L 8080:10.10.101.88:8080 your_username@bastion_host
总结:



[*]当地端口转发:将当地端口转发到长途服务器的端口,得当通过中心主机访问长途服务。
[*]长途端口转发:将长途服务器的端口转发到当地或另一台主机的端口,得当让长途服务器访问当地资源。
[*]动态端口转发:通过 SOCKS 署理灵活地访问长途服务器上的资源,得当创建一个署理服务。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: ssh如何实现端口转发