ssh的端口转发

要想知道什么是ssh端口转发需要先了解什么是ssh

一. SSH

SSH 为 Secure Shell 的缩写,SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台-包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。简单来说我们可以用SSH这个协议进行数据传输,而且在传输的过程中数据是经过加密的。在linux系统上我们可以通过ssh加上对方的ip来登陆对方的系统,除了这个功能,ssh还常作为隧道来保护一些不加密的数据传输。

二. 端口转发

端口转发是通过SSH协议将一个网络端口从一个网络节点转发到另一个网络节点。我们通常通过端口转发来建立一个本无法建立链接或者通过端口转发来保护其他的一些不加密的tcp链接来进行高效且较为安全的数据传输。由于链接传输数据时是明文传输,在传输过程中如果被抓包则可直接获得原数据,速度快但是安全性差,所以我们通过端口转发来建立ssh隧道,ssh传输的数据都是加密的所以我们只需在ssh的隧道下用tcp等数据传输即可进行高效且相对安全的数据传输。SSH端口转发分为本地端口转发,远程端口转发和动态转发。

三.本地端口转发

场景模拟:

现在我们有三台主机,c(client),s(sever)和m,其中c是我们的客户端,s是我们的服务器,m是我们的远程机也可以理解为是我们端口转发中的跳板机。我们对s设置防火墙,禁止c的访问,此时c可以访问r但却不能访问s,但我们可以通过本地转发及可使c直连到s,具体做法如下

c主机键入

ssh -L 1999:172.168.123.123:23 -Nf 172.168.321.321

解释:

-L 启用本地端口转发

1999是我c主机的一个没有启用的端口,是要被转发的端口,这个端口尽量不要选择0-1024之间的,因为这里大多是一些常用熟知端口

: 是分隔符

172.168.123.123 是我的目的地的ip也就是s的ip

23 是我要转发到的端口,也是telnet的默认端口,如果想用其他的方式链接只需在这改为对应的端口即可

-N 访问但不执行命令

-f 在后台运行,不开启则占用当前中断

172.168.321.321 m主机的ip

在这条命令中-Nf不是必要的

这条命令的具体作用是将c的1999空闲端口转发到ip为172.168.123.123主机的23端口,也就是s的23端口,然后在命令的最后指定了我们的跳板机

在执行过上面的命令后我们只要将telnet指定到刚才设定的空闲端口就可以在c上通过telnet访问s了

telnet 127.0.0.1 1999

 

四.远程端口转发

远程转发和本地转发基本相同,只是一个在本地操作一个在远程机操作,在ssh和应用的传输方向上一个相同一个相反。

在远程端口转发中,我们只需在m上键入

ssh -R 2999:172.168.123.123:23 -fN 172.168.456.456

解释:

-R 启用远程转发

2999 m上的一个空闲端口

172.168.123.123 目的ip,也就是s的ip

23 目的端口,也就是s的23端口

-fN 同上

172.168.456.456 c的ip

输入这条命令后m就开始监听2999端口,当c连到2999端口时m就将其转发到s的23端口

所以我们只需在输入

telnet 127.0.0.1 2999即可通过telnet直连到s

五.动态代理

本地转发和远程转发都是一太主机通过另一台访问一台本不可访问的主机,而动态代理则是一台主机通过另一台主机来访问Internet,即最终目的地不是一台特定的主机而是整个Internet。这也就是我们常说的科学上网。不过这只是科学上网的方式之一,科学上网还可以通过vpn的方式。

场景模拟:

两台主机,A,B,其中A可以访问全部网站,而B只能访问国内网站,此时我们只要通过A就可以使B连接到国外网站

我们只需在B键入

ssh -fND 9527 172.168.2.2

解释:

-D 启用动态代理

9527 是B的一个空闲端口

172.168.2.2 是A的ip

此时我们就可以通过9527这个端口,再利用sock5代理访问外国网站了

posted @ 2018-09-08 15:24  白蓝的橙  阅读(276)  评论(0编辑  收藏  举报