SSH端口转发
本地转发
基本设置
假设有一个启动在远程服务器的service,提供了访问的端口号,而本地的电脑想访问这个服务。但是可能由于远程服务器无公网地址等原因,无法直接访问到这个服务。这时候就可以通过配置ssh的端口转发,将访问本地端口的所有请求,转发到对应的远程端口。在建立ssh连接时可以这样写命令:
1 | ssh -L <远程服务的端口号>:<本地的ip(127.0.0.1)>:<本地的端口号> <user>@<server_ip> -p <port> -N |
参数说明:-L
: 表示将本地的访问请求,通过本地的端口,转发到远程的端口上。-p
: 连接ssh的端口,默认是22。-N
: 表示不运行shell,让ssh只充当端口转发的隧道。
保持链接
上面的设置非常常用,短期用来调试一下没有问题。但是,如果想要ssh连接保持较长时间运行,不会因为空闲停止,就需要设置ServerAliveInterval
参数ssh使其能够keep alive。
1 | ssh -L <远程服务的端口号>:<本地的ip(127.0.0.1)>:<本地的端口号> <user>@<server_ip> -p <port> -o ServerAliveInterval=60 -N |
在连接的命令添加了-o ServerAliveInterval=60
,表示的是本机每60秒通过ssh向服务器发送一个心跳请求,然后服务器响应,定期保持ssh不会中断连接。
远程转发
与本地端口转发相反,将-L
替换成-R
,其他参数做对应的转变即可。
可以这样记忆:-L
: Local。-R
: Remote。
参考文档
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RandIdea!