使用ProxyCommand跳过多层跳板机ssh目标机
ProxyCommand #用来指定连接到服务器的命令. 其可以是任何的命令,只要能从其标准输入读入数据,然后写出到标准输出即可. 这条命令需要连接到sshd服务器上.
ssh命令
-W host:port #将client过来的标准输入和输出forward到host和port指定的地方. 可以看到,这个选项直接就可以搭配上ProxyCommand的需求.
有了这些准备知识,我们就可以编写ssh的配置文件了,需要将下面的内容添加到自己的~/.ssh/config文件中(~是自己的家命令,如果是root用户就是/root,如果是非root用户就是/home/用户名,这个文件如果不存在就自己新建出来.)

这儿的%h表示要连接的目标机,也就是Hostname指定的ip或者主机名,%p表示要连接到目标机的端口.这儿可以直接写死固定值,但是使用%h和%p可以保证在Hostname和Port变化的情况下ProxyCommand这行不用跟着变化.
然后我们直接ssh mubiaoji,可以看到直接就连接上了.
此时整个链路是如下的:

本机会ssh到跳板机,建立一条连接,然后-W命令会从跳板机发起连接到目标机. 跳板机直接将本机到目标机和目标机到本机的数据透传,最后的效果就相当于从本机直接到目标机了.
总结
使用ssh的ProxyCommand,我们可以方便的透过跳板机进入到环境里面的机器. 实际上,我们可以不止跳过一层跳板机,通过不断的累加跳板机和ProxyCommand,理论上我们可以透过任意层数的跳板机. 如下就是两层跳板机的配置.

当我们可以登录到环境之后,我们就可以搭配上-L(本地转发),-R(远程转发),-D(动态转发)方便从环境里面进出以及登录环境里面的各种WEB界面了。
参考文档:
https://www.toutiao.com/i6671234558047814155/
https://cikeblog.com/proxycommand.html
作者:Jenwey
链接:https://www.jianshu.com/p/ad5aa9663d37
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on 2022-06-02 15:02 ExplorerMan 阅读(1700) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步