ssh端口转发一般常用的三种: 本地转口转发 -L 远程端口转发-R 动态端口转发-D
1:本地端口转发:服务器:192.168.30.35 客户端:192.168.30.133
服务器上部署的mysql 只允许本地登录
服务端 : service mysqld restart
查看服务监听没有: netstat -anutlp | grep :3306
显示如下:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6827/mysqld
EN 6827/mysqld
客户端: ssh -NfL 7001:localhost:3306 root@192.168.30.35
-Nf 代表放在后台,不连到服务端那边去,
7001:localhost:3306 代表将客户端的7001端口和服务端的3306端口建立隧道,绑定在一起,这样就能通过客户端7001端口访问服务端3306的数据。
客户端: mysql -uroot -p123456 -h127.0.0.1 -P7001 就能登录服务端的mysql了。
2:远程端口转发:
服务端: ssh -R 8888:localhost:3306 root@192.168.30.133
这样就将服务端的3306端口和客户端192.168.30.133的8888建立隧道,通过客户端8888端口访问服务端3306的数据。
注意:远程端口转发和本地端口转发中localhost的意义并不一样。
客户端:mysql -uroot -p123456 -h127.0.0.1 -P8888 就能登录服务端的mysql了
3:多台之间实现转发: 物理机:192.168.30.35 桥接虚拟机1:192.168.30.133 Nat虚拟机2:192.168.66.128
虚拟机1读取虚拟机2的数据:
service mysqld restart
虚拟机1: ssh -NfL 7001:192.168.66.128:3306 root@192.168.30.35
这里是把虚拟机1的7001端口和虚拟机2的3306端口通过192.168.30.35建立隧道, 这种通信并不是绝对安全的,因为192.168.30.35和192.168.66.128之间没有通过ssh的加密传输
虚拟机1:mysql -umyuser -pmypassword -h127.0.0.1 -P7001
如果想要和别的机器共享就加g:
ssh -g -NfL 7001:192.168.66.128:3306 root@192.168.30.35
再将另一台机器和虚拟机1的7001端口之间建立联系就可以了
4:动态端口转发:
测试端:192.168.30.133 服务端:192.168.30.35
服务端在台湾,将测试端的一个端口和服务端绑定,通过服务端访问来返回个测试端
ssh -D root@192.168.30.35
打开浏览器,这里用的火狐:
设置, advanced 然后选network 然后选settings 然后manual proxy configuration
按照如下配置
然后在浏览器中访问网页,显示的自己的ip地址,就是台湾的ip地址