SSH端口转发看这个就够了

ssh端口转发

  1. sshd_config里要打开AllowTcpForwarding选项,否则-R远程端口转发会失败。
  2. 默认转发到远程主机上的端口绑定的是127.0.0.1,如要绑定0.0.0.0需要打开sshd_config里的GatewayPorts选项。这个选项如果由于权限没法打开也有办法,可配合ssh -L将端口绑定到0.0.0.0,聪明的你应该能想到办法
1
2
3
4
5
6
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 本地端口转发
-D 动态端口转发

本地转发(当服务器端口没有开放而又想在本地访问时很有用)

1
2
3
ssh -NL [端口]:[目标IP]:[目标端口] [跳板机用户名]@[跳板机IP]
ssh -NL 13306:aliyuncs.com:3306 root@39.23.80.6
# 访问 127.0.0.1:13306 -> 跳板机:22  ->  aliyuncs.com:3306

本地转发是将 目标ip:目标端口 映射到 127.0.0.1:端口
即: 访问127.0.0.1:端口等于访问目标ip:目标端口

远端转发(当需要让别人访问你本地启动的服务时,类似于内网穿透)

1
2
3
4
5
6
ssh -NR [端口]:[目标IP]:[目标端口] [跳板机用户名]@[跳板机IP]
ssh -NR 8080:127.0.0.1:80 root@8.136.136.247
# 访问8.136.136.247:8080    -> 127.0.0.1:80

ssh -NR 8000:8.136.136.247:80 root@47.104.164.235
# 访问47.104.164.235:8000   ->   8.136.136.247:80

远端转发是将 目标ip:目标端口 映射到 跳板机的ip:端口
即: 访问跳板机的ip:端口等于访问 目标ip:目标端口

动态转发(相当于代理服务器)

1
2
3
4
5
ssh -ND [本地socke代理端口] [跳板机用户名]@[跳板机IP]
ssh -ND 2000 root@47.104.164.235

# 在浏览器或系统设置中将socke代理改成本地  127.0.0.1:2000 
# 然后本地所有的上网出口全部通过47.104.164.235进行转发。百度ip会发现本机ip是47.104.164.235

动态端口转发则只是绑定了一个本地端口,而目标地址:目标端口则是不固定的

目标地址:目标端口是由本地发起的请求决定的

比如访问baidu.com 则相当于把这个请求首先发送到了47.104.164.235,然后由47.104.164.235进行访问后将数据转发回至本地

即: 访问百度流程变成 本地 -> 47.104.164.235 -> 百度

0%