最近做某演示,期间几个 ssh 操作把对方开发给惊到了,我才发现 OpenSSH 有些奇技淫巧并不是所有开发都知道的,特来水上一篇。
几年前翻 OpenSSH 文档时无意中发现,隧道转发可以在现有连接上动态设置,而无需重开或者另开连接。看了看现在中文互联网上关于 ssh 隧道的一些文章,都没见到有关动态设置的说明,都默认开启隧道需另建或重建新的 ssh 连接。其实不然,OpenSSH 客户端/服务端支持在保持连接的同时增删隧道。某些特殊场景下,在技术防护不到位的环境里用好这点可以做出隧道嵌套,端口封锁逃逸等等各种骚操作🤐。
具体操作:已经连上 ssh 时,按一下 Enter,再按 Shift+`(也就是 ~),最后按 Shift+c 调出 OpenSSH 客户端的内置命令行,输入 help
帮助,输出所有隧道操作的命令说明如下。
接下来该怎么开启各类隧道不必我赘述了,再次调出 ssh 客户端的内置命令行,输入相关参数回车即可。
还有一些其他操作,搜索 "ssh escaping sequences" 即可。例如 Enter,~,. 强行断开 ssh 连接,Enter,~,Ctrl+z 把 ssh 客户端置于后台运行等等。