通过使用SSH连接来建立的通道,它被称之为SSH隧道。
本地SSH隧道
1 | ssh -N -f -L 8080:234.234.234.234:80 123.123.123.123 # 通过SSH服务器(123.123.123.123)将远程机器(234.234.234.234)的80端口映射到本地8080端口 |
参数介绍:
-N
: 不执行远程指令-f
: 后台执行ssh指令-L
: 做本地端口转发,冒号(:)分隔的三个参数分别是- 本地端口号
- 目标机器IP地址
- 目标机器端口号
- 最后一个参数是远程SSH服务器地址
远程SSH隧道
1 | ssh -N -f -C -R 8080:234.234.234.234:80 123.123.123.123 # 将本地的80端口映射到远程服务器(123.123.123.123)的8080端口 |
参数介绍:
-N
: 不执行远程指令-f
: 后台执行ssh指令-C
: 压缩请求数据-R
: 做远程端口转发,冒号(:)分隔的三个参数分别是:- 目标机器端口号
- 需要映射内部机器的IP地址
- 本地端口号
- 最后一个参数是远程SSH服务器地址
Socks代理
1 | ssh -qtfnNC -D 0.0.0.0:7070 123.123.123.123 # 通过123.123.123.123建立socks代理,并绑定到0.0.0.0的7070端口上 |
参数介绍:
-q
: 静默模式-t
: 为远程系统上的ssh进程分配一个伪tty(终端)-f
: 后台执行ssh指令-n
: 将标准输出重定向到/dev/null
-N
: 不执行远程指令-C
: 压缩请求数据-D
: 绑定地址
注意
- 如果经常发现过一段时间SSH连接自动断开,可能原因是SSH客户端的
TCPKeepAlive
被关闭了,可以使用参数-o TCPKeepAlive=yes
来开启。 - 自动检查连接,
-o ServerAliveInterval=30
,表示每30s检查一次连接,-o ServerAliveCountMax=3
表示服务器没有响应次数达到3次,则断开连接。