热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SSH端口转发案例,命令及服务器配置

SSH端口转发-案例,命令及服务器配置三种转发类型本地转发-L远程转发-R动态转发-D简单理解:ABC三台机AC机器无法直接互通,但是B分别能和AC互通,所以AC通过B转发互通本地




SSH 端口转发 - 案例,命令及服务器配置

三种转发类型


  • 本地转发 -L
  • 远程转发 -R
  • 动态转发 -D

简单理解: ABC三台机 AC机器无法直接互通, 但是B分别能和AC互通, 所以AC通过B转发互通


本地 SSH 端口转发

将远程 server 的某个端口映射到本地的某个端口,通常用于A机器通过B登录C , 因为无法直接连通C,但是B可以连通C的情况

(如果是跳板机登录其他服务器,可以使用-J 参数跳转)

访问路径: 自己或者同局域网用户 --> 本机:Port --> SSH隧道 --> 跳转机 --> 远程服务:Port

Command:

ssh -L [本地主机:]本地主机端口:远程网络主机:远程网络主机端口 转发服务器
ssh -L 0.0.0.0:8080:HOST_C:8080 root@HOST_A # 本地主机可以忽略不写,默认是127.0.0.1
ssh -L 127.0.0.1:8080:HOST_C:8080 root@HOST_A # 自查127.0.0.1和0.0.0.0区别

Example:

* `ssh -L 8000:10.10.30.3:10000 10.10.20.2` # 通过ssh 登录 10.10.20.2 ,将远程10.10.30.3的端口10000映射到本地计算机的8000端口上
* `ssh -L 10086::10086 10.10.20.2` # 将10.10.20.2的10086端口映射到本地

远程端口转发

将本机(或本地局域网中其他服务器)某个端口,映射到服务器的端口上,通常用于提供给外网访问(因为服务器有公网IP鸭)

访问路径: 用户 --> Server:Port —> SSH隧道 --> 本地主机端口 --> 本机服务端口(或局域网其他主机)

重要提示:

默认情况下,OpenSSH 只允许从服务器本机连接到远程转发端口,使用netstat -anlp 查看监听端口时能看到监听的是 127.0.0.1:Port
如何能让其他用户通过Server IP访问呢 ? 需要监听 0.0.0.0:Port
修改服务器的 /etc/ssh/sshd_config ,修改或添加一行,有如下三个可选项
GatewayPorts No (设默认只允许来自服务器主机的本地连接)
GatewayPorts Yes (Internet上的任何人都可以连接到远程转发端口)
GatewayPorts clientspecified (可以指定一个可以连接的IP地址,如果没有指定的话,则任何人都可以访问)

Command:

ssh -R [登录主机:]登录主机端口:本地网络主机:本地网络主机端口 代登录主机

Example:


  • ssh -R 10.10.20.2:3306:localhost:3306 10.20.20.2 # 将本地3306端口映射给远程10.20.20.2服务器的3306端口
  • ssh -R 10.10.20.2:3306:192.168.2.5:3306 10.20.20.2 # 将本地局域网中192.168.2.5的3306端口映射给远程10.20.20.2服务器的3306端口
  • ssh -o -R 0:localhost:3306 10.20.20.2 # 将本地3306端口映射给远程服务器的一个随机端口,连接后第一行输出会显示具体是哪个端口 ex:Allocated port 41389 for remote forward to localhost:3306
  • ssh -R 52.194.1.73:8080:localhost:80 xxxxxx # 此时只有 52.194.1.73 能够访问 xxxxx 的8080端口,前提要设置GatewayPorts clientspecified

服务器端配置

必须在服务器上启用 OpenSSH 服务器配置文件中的 AllowTcpForwarding 选项,才能允许远程端口转发。

不过默认情况下该功能是打开的。有如下可选项:


  • yes 或 all,以允许所有 TCP 转发
  • no,以防止所有 TCP 转发,本地允许本地转发,远程允许远程转发。

另一个选项是 AllowStreamLocalForwarding,它可以用于转发 Unix 域套接字。它允许使用与 AllowTcpForwarding 相同的值。默认值是yes。

AllowTcpForwarding remote
AllowStreamLocalForwarding no

动态端口转发

无需固定指定被访问目标主机的端口号。这个端口号需要在本地通过协议指定,该协议就是简单、安全、实用的 SOCKS 协议。

简单讲就是, 通过sock代理将所有流量通过server转发. server能访问的ip,你也就都能访问了

Command:

ssh -D [本机:]本机端口

Example:

# 如何使用?
举例
* 浏览器设置sock代理为 server:端口
* ssh -o ProxyCommand='/usr/bin/nc -X 5 -x 127.0.0.1:5000 %h %p' user@host2 # 给ssh套上sock代理并通过代理登陆host2

注意事项


  • 只要SSH不断开,连接就一直存在,同理断开SSH连接就会断开
  • 如果不是以root身份设置端口转发的话,转发端口只能使用大于1024的端口号。


推荐阅读
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
author-avatar
明天会更好--好过_652
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有