ssh tunnel 笔记

命令说明

约定:

  • SSH隧道发起者:本机,使用ssh主动建立连接的一方。
  • SSH隧道接受这:远端,被动接受ssh请求的一方。

ssh –help

  • -g 网关功能,会监听所有本地地址
  • -L 本地转发,格式为 ::,表示映射的本地端口和远程地址。注意remoteServerHost和RmotePort是指,只要是数据处理方可到达的地址。都有效并且可以使用。
  • -R 本地转发,格式为 ::,表示映射的本地端口和远程地址。注意remoteServerHost和RmotePort是指,只要是数据处理方可到达的地址。都有效并且可以使用。
  • -f 放到后台运行
  • -N -N不打开ssh回话,默认会开启ssh回话,一般配合-f使用。
  • -C 请求会话间的数据压缩传递。对于网络缓慢的主机,压缩对连接有所提升。但对网络流畅的主机来说,压缩只会更糟糕。
  • -q 静默模式。大多数警告信息将不输出。
  • -D 表示本地端口转发,当监听到此端口有连接时,此连接中的数据将通过安全隧道转发到server端,目前支持socks4和socks5协议。

本地转发

ssh隧道发起方监听端口。ssh隧道发起方接受请求,将数据包发送到远端服务器

1
$ ssh -g -N -f -C -L 8080:google:80 root@selinux.org

解释:在本机(SSH发起者/发送者)监听8080端口,数据包会送本机发送到selinux.org,selinux.org再转送给google:80

远程转发

ssh隧道接受方监听端口。ssh隧道发起方接受请求,将数据包发送到ssh隧道发起方。

1
$ ssh -g -N -f -C -R 6443:192.168.1.100:6443 root@selinux.org

解释:selinux监听一个6443端口,会把数据包发送到本地(ssh隧道发起者)然后发起者发送给192.168.1.100

socks4/socks5

1
$ ssh -D 1080 -N -f -C -q root@selinux.org

解释:本地监听端口,接受socks4/socks5协议,会将数据包发送到selinux.org,然后转发到数据包的要求的目的地址。

注意:上面两个都是讲的一对一的,这个是一对N,想跟谁沟通就可以跟谁沟通,不限地址和端口,而且支持TCP/UDP协议。