利用ssh隧道解决登录vps服务器慢的问题

0. 背景

linode的vps在某些网络下访问比较慢,甚至还有丢包的情况。但是从国内的服务器ping过去,一切正常。之前听说过ssh端口转发及隧道特性,于是考虑在通过正常的国内服务器去登录vps。

1. 传统做法

先登录稳定服务器,然后在上面再通过ssh登录到目标机器。虽然简单直接,但这样的缺点也显而易见,证书管理不方便。

2. SSH隧道方式

这里是基于稳定服务器将vps的端口转发到了本地。

step1 先登录稳定服务器
ssh -L 36000:VPS-IP:22 稳定服务器IP
这里通过稳定服务器,将VPS的22端口转发到了本地的36000端口

step2 登录本地端口
ssh -p 36000 localhost
由于是转发,这里之前在VPS上配置的证书依然可以使用,只是换了一个端口和IP而已。

3. 其他使用场景
本地端口转发还有一个比较实用的场景,就是可以将服务器的内网端口转发到本地。比如,有些开发同学习惯通过本地的IDE连接远程的mysql,这样将数据库的远程访问权限打开有一定安全隐患。体验下另外一种方式:

# 先将远程服务器的192.168.2.110:3307端口映射到本地33070
ssh -L 33070:192.168.2.110:3307 跳板机IP

#登录本地33070端口,注意将host指定为127.0.0.1
mysql -P 33070 -h127.0.0.1 -uusername -p'password'

4. 其他转发方式

除了将远程端口转发到本地(Local Forwarding),还有两种方式:
– 动态端口转发(Dynamic Forwarding)
ssh -D [bind_addr]:port user@server
适合代理方式

– 远程端口转发(Remote Forwarding)
ssh -R [bind_addr]:port:host:hostport user@server
相当于将host:hostport映射到了server:port上

5. 参考资料
SSH端口转发以及应用实例
三种不同类型的ssh隧道
SSH隧道简洁介绍以及SSH隧道实际应用
实战ssh端口转发