ssh快速入门
ssh是替代telnet的技术,最主要的特点是传输加密服务。
telnet的默认tcp端口是23,而ssh的tcp端口是22。
ssh端口转发技术的作用
- 数据加密
- 突破防火墙的限制 ★
端口转发的分类
- 本地转发 (local forwarding)
- 远程转发 (remote forwarding)
- 动态转发 (dynamic forwarding)
本地转发
语法:
ssh -L [bind_address] port:host:hostport server_address
解析: L: Local host bind_address:如果省写,则默认使用127.0.0.1,这时本地转发只能对本机提供服务;如果使用bind_address,即使用一个固定的ip (可以是本台机器上的一个网卡的ip),则内网其他的人也可以使用这个地址进行端口转发。注意这里的使用ssh客户端 port:开启这个port端口,建议不要设置太 小,以免跟其他端口冲突, host:你想访问资源的远程主机ip hostport:那些资源对应的端口 server_address:可以跟host的ip相同,也可以不同。注意这里使用ssh服务端
还有一些常用的选项: -N : 不执行命令,和-f配合使用 -f: 在后台执行,不用登陆到远程主机,即命令行显示的还是本机内容。
示例:
1.
主机A:10.10.10.1
服务器B:10.10.10.2
上面3台机器可以互相访问
我们可以使用A的ssh客户端通过监听7788端口,访问B的80端口资源,跟B建立一个通道,可以使用下面的命令:
ssh -Nf -L 10.10.10.1:7788:10.10.10.2:80 10.10.10.2
其中的server_address可以是能够访问到B(10.10.10.2)的其他主机。
接下来,我们就可以使用本机浏览器的7788端口访问到服务器端,然后服务器端访问80端口。
2.绕过防火墙访问主机
主机A:10.10.10.1
服务器B:10.10.10.2
服务器C:10.10.10.3
其中A和C之间有防火墙阻隔,导致A不能直接访问C,但B可以访问C,这里我们就可以使用主机A通过B访问到C:
ssh -Nf -L 7788:10.10.10.3:80 10.10.10.2 //注意写法
我们没有写bind_address,这里就默认使用127.0.0.1,我们通过B( 10.10.10.2)跟C(10.10.10.3)建立通道。
远程转发
远程转发和本地转发本质没有什么区别,唯一不同的是,本地转发是在本地开启一个指定的端口,远程转发是在远程开启一个指定的端口,而且使用的命令选项也不同,远程转发使用-R。 命令:
ssh -R [bind_address]:port:host:hostport server_address
bind_address:这里一定要注意的是远程主机的ip port:远程主机上面要开放的端口 host:你想让它访问的主机ip hostport:资源对应的端口 server_address:你想跟谁建立一个通道
示例
公司内网的主机A(10.10.10.10 )可以通过防火墙或路由器访问外网,但一般情况下外网不可以直接访问内网主机A。假如我们公司出差,想通过外网访问到公司的主机A,这时我们就可以联系公司的同事,使用下面的命令让内网A和外网主机(假设C)建立通道:
ssh -Nf -R 192.168.1.150:7788:10.10.10.10:80 192.168.1.150
这时,内网服务器就和外网(192.168.1.150)建立好了连接,外网就可以通过这条链接访问到内网的服务器了,注意,这时的内网服务器使用的还是ssh客户端,而外网使用的是ssh服务器。
动态端口转发
特点:本地转发和远程转发的共同特点是只能访问某一个主机上面的某一个资源(端口port),如果我们想访问很多远程主机上的资源的话,我们就可以使用动态转发技术。 类似于代理服务器 命令更加简单:
ssh -D [bind_address:]port server_address
server_address:跟它建立通道。只要它能访问各种资源,那么我们就可以通过bind_address的port通过通道访问server_address,进而访问到server_address的资源了。 所以确实像一台代理服务器的效果了。
示例
主机A(10.10.10.10),不能访问外网
主机B(10.10.10.20),可以访问外网
这时,我们就能够让A和B建立一个通道,然后让A可以访问外网。 我们在A上设置命令:
ssh -Nf -D 10.10.10.10:7788 10.10.10.20
之后我们还需要在浏览器上设置一下代理,然后我们就能够通过B访问外网了。