您的位置:首页 > 其它

SSH端口转发

2017-03-05 22:00 197 查看
tar czf myzlc.gz zlc/

tar cz zlc/

ssh root@server ‘tar cz zlc’ | tar xzv

ssh -D 8080 root@server

一、本地端口转发

本地转发中的本地是指将本地的某个端口转发到其他主机的某个端口,这样当我们的程序连接本地的这个端口时,其实间接连上了其他主机的某个端口,当我们发数据包到这个端口时数据包就自动转发到了那个远程端口上了

命令语法:ssh -L [bind-address:]port:host:hostport server_address

解释下:bind_address表示本地主机的ip(绑定地址),这是针对系统有多块网卡,不指定默认是127.0.0.1

port:本地主机指定监听的端口

host:远程主机的ip

hostport:指定远程主机的端口,如果远程主机是HTTP,就是80,FTP(21)。。。

server_address:远程主机的ip,也可以是能够访问到远程主机的另一个ip(我们通过实验来理解)

另外有几个参数需要知道:

-L:指定本地(客户端)主机上的指定端口转发到给定的远端的主机和端口

-N:不执行远程指令

- f:放在后台执行

netstat -nt:列出tcp网络数据的端口

netstat -ntlp:列出系统已在监听的网络连接端口及PID

A 192.168.1.120 server

B 192.168.1.121 ssh client

C 192.168.1.109 跳转机

范例1 在B上执行

ssh -Nf -L 192.168.1.121:7900:192.168.1.120:22 192.168.1.109

ssh 192.168.1.121 -p 7900 先登录192.168.1.121 再跳到192.168.1.109 ,再通过192.168.1.109跳到192.168.1.120

B—(port:7900)已经建立隧道(port:22)—C—–(port:xxxx)ssh登录时动态建立隧道(port:22)—–A

ssh -Nf -L 192.168.1.121:8900:192.168.1.120:21 192.168.1.109

范例2

ssh -Nf -L 192.168.1.121:7900:192.168.1.120:22 192.168.1.120

ssh 192.168.1.121 -p 7900 先登录192.168.1.121 再调到192.168.1.120 ,再通过120跳到192.168.1.120

B—(port:7900)已经建立隧道(port:22)—A—–(port:xxxx)动态建立隧道(port:22)—–A

应用场景:针对C不被允许访问A的情况。可以通过如下命令模拟此场景

1、在A的/etc/hosts.deny,配置一行“sshd:192.168.1.109”

2、在C上执行ssh 192.168.1.120,返回“ssh_exchange_identification: read: Connection reset by peer”错误

3、在B上执行 ssh -Nf -L 192.168.1.121:7900:192.168.1.120:22 192.168.1.120

4、在C上执行ssh 192.168.1.121 -p 7900就可登录192.168.1.120了

最后需要提醒的是,如果想关闭某个ssh隧道,只能用kill杀死相关进程,隧道被关闭后,指定的连接也会关闭

二、SSH远程端口转发:

远程转发和本地很相似,原理也差不多,但是不同的是,本地转发是在本地主机指定的一个端口,而远程转发是在远程的主机上指定一个端口将指向该端口的连接转发到本地端口。本质一样,区别在于需要转发的端口是在远程主机上还是在本地主机上。

远程转发使用的命令和本地转发的选项不同:

ssh -R [bind-address:]post:host:hostport server_address

这里需要注意的是:

bind-address指定的是远程主机ip,不是本机

port:远程主机指定监听的端口

host:你需要访问的主机

hostport:指定被访问主机的端口

server_address:远程主机和谁?建立的隧道,指定谁

主机A:192.168.1.109(外网)

主机B:192.168.1.121(外网)

主机C:192.168.1.120(内网)

在C上执行

ssh -Nf -R 192.168.1.121:9000:192.168.1.120:22 192.168.1.121

127.0.0.1:41392 127.0.0.1:9000 ESTABLISHED 4622/ssh (ssh -p 9000 127.0.0.1命令时建立)

192.168.1.121:22 192.168.1.120:40432 ESTABLISHED 4598/sshd: root (执行ssh -Nf -R命令建立的)

192.168.1.120:39892 192.168.1.120:22 ESTABLISHED 4153/ssh (ssh -p 9000 127.0.0.1命令时建立)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ssh