ssh不是内部文件或外部命令_ssh高级用法(一) 使用ProxyCommand透过多层跳板机

0x00 多层跳板机正常登陆方法

很多环境都有一台统一登录跳板机,我们需要先登录跳板机,然后再登录自己的目标机器.登录流程如下

ssh root@跳板机ip ssh root@自己的目标机器ip

比如下面的登录方式

cef1bd1e1a000643cb180ce3904441d0.png

每次这样登录会很繁琐,openssh有一个ProxyCommand的配置可以解决这个问题.

0x01 使用ProxyCommand来透过跳板机

ProxyCommand是openssh的特性,如果使用putty,xshell,那么是没有这个功能的.在windows下面,推荐使用mobaxterm,其基于cgywin,里面移植了一个完整版本的openssh实现,在linux和macos里面直接就是openssh了.

我们简单看下ProxyCommand文档说明

man ssh_config

ProxyCommand用来指定连接到服务器的命令. 其可以是任何的命令,只要能从其标准输入读入数据,然后写出到标准输出即可. 这条命令需要连接到sshd服务器上.

也就是说,在不使用ProxyCommand的情况下,ssh会自己建立到目标机器22端口的连接.使用了ProxyCommand,那么使用指定命令来建立到目标机的连接,ssh直接使用已经建立的连接.在文档里面使用了nc命令来建立连接.

nc是外部命令,可能有些机器上没有安装.实际上,ssh命令的-W选项可以完成这个事情

man ssh

-W host:port 将client过来的标准输入和输出forward到host和port指定的地方. 可以看到,这个选项直接就可以搭配上ProxyCommand的需求.

有了这些准备知识,我们就可以编写ssh的配置文件了.需要将下面的内容添加到自己的~/.ssh/config文件中(~是自己的家命令,如果是root用户就是/root,如果是非root用户就是/home/用户名,这个文件如果不存在就自己新建出来.)

Host tiaoban Hostname 跳板机的ip Port 跳板机的端口(如果是非22的需要填写) User root(如果非root,换成跳板机的用户)Host mubiaoji Hostname 目标机的IP Port 跳板机的端口(如果是非22的需要填写) User root(如果非root,换成跳板机的用户) ProxyCommand ssh -q -x -W %h:%p tiaoban

这儿的%h表示要连接的目标机,也就是Hostname指定的ip或者主机名,%p表示要连接到目标机的端口.这儿可以直接写死固定值,但是使用%h和%p可以保证在Hostname和Port变化的情况下ProxyCommand这行不用跟着变化.

68d0e05234188ed9d3747e68900942c4.png

然后我们直接ssh mubiaoji,可以看到直接就连接上了.

908e7622827e1ddbc27702b44708dcab.png

如果使用的工具没有密码记住的功能(我使用的mobaxterm有自动记住密码的功能,linux自带的没有记住密码的功能,mac的Iterm2可以找一下相应的配置),那么这儿会让输入两次密码,第一次是跳板机的密码,第二次是目标机的密码,其实输入密码的时候会提示要输入密码的机器的IP,自己也可以判断.

此时整个链路是如下的:

568bc3abf5e4941722459c9596a870f0.png

本机会ssh到跳板机,建立一条连接,然后-W命令会从跳板机发起连接到目标机. 跳板机直接将本机到目标机和目标机到本机的数据透传,最后的效果就相当于从本机直接到目标机了.

0xff 总结

使用ssh的ProxyCommand,我们可以方便的透过跳板机进入到环境里面的机器. 实际上,我们可以不止跳过一层跳板机,通过不断的累加跳板机和ProxyCommand,理论上我们可以透过任意层数的跳板机. 如下就是两层跳板机的配置.

Host tiaoban1 Hostname 跳板机的ip Port 跳板机的端口(如果是非22的需要填写) User root(如果非root,换成跳板机的用户)Host tiaoban2 Hostname 跳板机的ip Port 跳板机的端口(如果是非22的需要填写) User root(如果非root,换成跳板机的用户) ProxyCommand ssh -q -x -W %h:%p tiaoban1Host mubiaoji Hostname 目标机的IP Port 跳板机的端口(如果是非22的需要填写) User root(如果非root,换成跳板机的用户) ProxyCommand ssh -q -x -W %h:%p tiaoban2

当我们可以登录到环境之后,我们就可以搭配上-L(本地转发),-R(远程转发),-D(动态转发)方便从环境里面进出以及登录环境里面的各种WEB界面了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值