ssh-正向与反向代理
- 常用参数
- 栗子
- 实战
常用参数
- -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
- -C 表示压缩数据传输
- -f 告诉SSH客户端在后台运行
- -q Quiet mode. 安静模式,忽略一切对话和错误提示
- -g:允许远程主机连接主机的转发端口
- -L port:host:hostport 做本地映射端口(正向隧道,监听本地port)
- 需要使用的本地端口号
- 需要访问的目标机器IP地址(IP: 234.234.234.234)
- 需要访问的目标机器端口(端口: 21)
- -R。port:host:hostport 该参数的三个部分的含义分别(反向隧道,监听远程port)
- 远程机器使用的端口(2222)
- 需要映射的内部机器的IP地址(127.0.0.1)
- 需要映射的内部机器的端口(22)
- 栗子 -R X:Y:Z 就是把我们内部的Y机器的Z端口映射到远程机器的X端口上
- -D port 指定一个本地机器 ``动态的 应用程序端口转发
栗子
ssh -N -f -L 2121:234.234.234.234:21 123.123.123.123
ftp localhost:2121 # 现在访问本地2121端口,就能连接234.234.234.234的21端口了
-
保持长时间连接
ssh -R 2222:localhost:22 123.123.123.123 "vmstat 30"
-
SSH隧道建立SOCKS服务器
ssh -N -f -D 1080 123.123.123 # 将端口绑定在127.0.0.1上 ssh -N -f -D 0.0.0.0:1080 123.123.123.123 # 将端口绑定在0.0.0.0上
-
SSH 建立正向代理
ssh -CfNg -L 6300:127.0.0.1:1521 oracle@172.16.1.164
-
SSH 建立反向代理
ssh -CfNg -R 1521:127.0.0.1:6300 oracle@172.16.1.164
实战
有A,B,C 3台服务器;
A,C有公网IP, B是某IDC的服务器无公网IP。
A通过B连接C的80端口(A<=>B<=>C), 那么在B上执行如下命令即可:
ssh -CfNg -L 6300:127.0.0.1:80 userc@C
ssh -CfNg -R 80:127.0.0.1:6300 usera@A