首页 > 其他分享 >SSH 命令的三种代理功能(-L/-R/-D)

SSH 命令的三种代理功能(-L/-R/-D)

时间:2022-11-30 12:56:42浏览次数:50  
标签:HostC HostB HostA 端口 代理 三种 SSH ssh

日常开发中,数据库没有对外授权,只对特定服务器(服务器A,B,C)进行了授权,因此只能通过服务器A,B,C作为跳板访问数据库;但是通过在服务器A/B/C上进行端口映射,就可以变相实现外部环境访问此隐私数据库

1、SSH命令的三种代理功能(-L/-R/-D)

ssh 命令除了登陆外还有三种代理功能:

  • 正向代理(-L):相当于 iptable 的 port forwarding
  • 反向代理(-R):相当于 frp 或者 ngrok
  • socks5 代理(-D):相当于 ss/ssr

如要长期高效的服务,应使用对应的专用软件。如没法安装软件,比如当你处在限制环境下想要访问下某个不可达到的目标,或者某个临时需求,那么 ssh 就是你的兜底方案。

1.1、正向代理:

所谓“正向代理”就是在本地启动端口,把本地端口数据转发到远端。

用法1:远程端口映射到其他机器

HostB 上启动一个 PortB 端口,映射到 HostC:PortC 上,在 HostB 上运行:

HostB$ ssh -L 0.0.0.0:PortB:HostC:PortC user@HostC

这时访问 HostB:PortB 相当于访问 HostC:PortC(和 iptable 的 port-forwarding 类似)。

用法2:本地端口通过跳板映射到其他机器

HostA 上启动一个 PortA 端口,通过 HostB 转发到 HostC:PortC上,在 HostA 上运行:

HostA$ ssh -L 0.0.0.0:PortA:HostC:PortC  user@HostB

这时访问 HostA:PortA 相当于访问 HostC:PortC。

两种用法的区别是,第一种用法本地到跳板机 HostB 的数据是明文的,而第二种用法一般本地就是 HostA,访问本地的 PortA,数据被 ssh 加密传输给 HostB 又转发给 HostC:PortC。

1.2、反向代理:

所谓“反向代理”就是让远端启动端口,把远端端口数据转发到本地。

HostA 将自己可以访问的 HostB:PortB 暴露给外网服务器 HostC:PortC,在 HostA 上运行:

HostA$ ssh -R HostC:PortC:HostB:PortB  user@HostC

那么链接 HostC:PortC 就相当于链接 HostB:PortB。使用时需修改 HostC 的 /etc/ssh/sshd_config,添加:

GatewayPorts yes

相当于内网穿透,比如 HostA 和 HostB 是同一个内网下的两台可以互相访问的机器,HostC是外网跳板机,HostC不能访问 HostA,但是 HostA 可以访问 HostC。

那么通过在内网 HostA 上运行 ssh -R 告诉 HostC,创建 PortC 端口监听,把该端口所有数据转发给我(HostA),我会再转发给同一个内网下的 HostB:PortB。

同内网下的 HostA/HostB 也可以是同一台机器,换句话说就是内网 HostA 把自己可以访问的端口暴露给了外网 HostC。

按照前文《韦易笑:内网穿透:在公网访问你家的 NAS》中,相当于再 HostA 上启动了 frpc,而再 HostC 上启动了 frps。

1.3、本地 socks5 代理

在 HostA 的本地 1080 端口启动一个 socks5 服务,通过本地 socks5 代理的数据会通过 ssh 链接先发送给 HostB,再从 HostB 转发送给远程主机:

HostA$ ssh -D localhost:1080  HostB

那么在 HostA 上面,浏览器配置 socks5 代理为 127.0.0.1:1080,看网页时就能把数据通过 HostB 代理出去,类似 ss/ssr 版本,只不过用 ssh 来实现。

2、使用优化

为了更好用一点,ssh 后面还可以加上:-CqTnN 参数,比如:

$ ssh -CqTnN -L 0.0.0.0:PortA:HostC:PortC  user@HostB

其中 -C 为压缩数据,-q 安静模式,-T 禁止远程分配终端,-n 关闭标准输入,-N 不执行远程命令。此外视需要还可以增加 -f 参数,把 ssh 放到后台运行。

这些 ssh 代理没有短线重连功能,链接断了命令就退出了,所以需要些脚本监控重启,或者使用 autossh 之类的工具保持链接。

3、功能对比

正向代理(-L)的第一种用法可以用 iptable 的 port-forwarding 模拟,iptable 性能更好,但是需要 root 权限,ssh -L 性能不好,但是正向代理花样更多些。反向代理(-R)一般就作为没有安装 frp/ngrok/shootback 时候的一种代替,但是数据传输的性能和稳定性当然 frp 这些专用软件更好。

socks5 代理(-D)其实是可以代替 ss/ssr 的,区别和上面类似。所以要长久使用,推荐安装对应软件,临时用一下 ssh 挺顺手。

4、正向代理—远程端口映射到其他机器示例

1、查看所有ssh进程

$ ps -ef | grep ssh

2、MySQL和服务器信息

  • MySQL库连接信息如下:

服务器地址:  am-xxxxx.ads.aliyuncs.com
端口:3306
用户名: bx_dsp     密码: xxxxxx#$vVqoyNHXgsxxxx

  • 跳转服务器是双网卡:

服务器的内网IP为 172.xxx.xxx.169
服务器的外网IP为 123.xxx.xxx.240

3、在跳板机服务器上配置端口转发命令

该库只能在 123.xxx.xxx.240 上进行访问,所以为了方便外网访问,需要进行端口转发,在 123.xxx.xxx.240 配置如下命令,设置转发端口

ssh -NCfg -L 18001: am-xxxxx.ads.aliyuncs.com:3306 [email protected]

4、外部访问方式示例


5、Linux ssh命令详解

标签:HostC,HostB,HostA,端口,代理,三种,SSH,ssh
From: https://www.cnblogs.com/zhugq02/p/16938074.html

相关文章

  • Apache 配置虚拟主机三种方式
    一、基于IP 1.假设服务器有个IP地址为192.168.1.10,使用ifconfig在同一个网络接口eth0上绑定3个IP:[root@localhost root]# ifconfig eth0:1 192.168.1.11[root@localho......
  • win10 git报错:Unable to negotiate with port: no matching host key type found. The
    现象已经生成id_rsa的密钥,并且在git上进行了配置。但是用gitclone失败。报错:Unabletonegotiatewithport:nomatchinghostkeytypefound.Theiroffer:ssh-rsa。......
  • Java内功修炼系列:代理模式及动态代理
    目录​​一代理模式​​​​1.1简介​​​​1.2代理模式角色定义​​​​二静态代理​​​​2.1介绍和实例​​​​2.2静态代理的缺点​​​​三动态代理​​​​3.1......
  • eclipse搭建ssh后台
    SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题。下面我介绍一下SSH框架搭建的全过程。 第一步:准备工作。  下载好eclipse,Struts2,Spring,......
  • C#中声音播放的三种方式
    C#中声音的播放主要有三种方法:1.使用API函数。2.使用SoundPlayer类播放。3.使用DirectX进行播放。一、使用API函数进行播放。 windows操作系统中的winmm.dll文件中......
  • 华为分布式数据库gaussdb,代理长连接会把查询语句分别到主节点上的优化思考
    智能刊登Gaussdb优化点 :1.确定是查询的语句,可以通过hint语句指定在读节点上查询,避免因代理长连接到主节点查询;用法:/*forceSLAVE*/SELECTCOUNT(1)assuccessFROM......
  • 解决跨域问题:配置代理
    const{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({transpileDependencies:true,lintOnSave:false,//代理跨域devServ......
  • mac使用ssh连接linux(ubuntu)GUI图形界面
    mac使用ssh连接linux(ubuntu)GUI图形界面1.linux服务端1.首先需要在linux服务端打开X11转发以ubuntu为例编辑/etc/ssh/sshd_config配置文件命令vim/etc/ssh/sshd_c......
  • Nginx反向代理NFS
    作者:独笔孤行官网:​​​http://anyamaze.com​​公众号:云实战前言Nginx是一个轻量级、高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内......
  • python接口自动化43- 使用代理proxies 发送请求
    前言如何在requests模块中使用代理发送请求requests使用代理在requests模块中使用代理示例#作者-上海悠悠微信/QQ交流:283340479#blog地址https://www.cnblogs......