0x00 跳板机

跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是运系统管理员或运维人员常用的操作平台之一。 —— 维基百科

而,我们使用跳板机的目的更主要是为了安全,规范统一入口。如下图:只有通过跳板机服务器才能登陆或者操作业务服务器,PC 客户端不能直接去登陆或操作业务服务器。

0x01 使用跳板机

方法一:先登录跳板机,然后再操作业务服务器

# 登陆跳板机
ssh username@jumpServerIp -p jumpServerPort
# 从跳板机登陆业务服务器
ssh username@host1Ip -p host1Port

方法二:使用 ProxyCommand + 经典 SSH 代理的方式。

关于 ProxyCommand 可以 man ssh_config 查看帮助。

ssh username@host1Ip -p host1Port -o ProxyCommand='ssh -p jumpServerPort username@jumpServerIp  -W %h:%p'

方法三:使用 ProxyCommand + nc「netcat」 代理的方式。

注意:如下方法需要跳板机支持 nc「nc「netcat」」 命令。关于 瑞士军刀 netcat 有兴趣可以深入学习一下,深入学习一下会吓一跳的。

# 其中 100 为设置的超时时间 h 为 host p 为 port
ssh username@host1Ip -p host1Port -o ProxyCommand='ssh -p jumpServerPort username@jumpServerIp nc -w 100 %h %p'

综合

问:那么如何更加优雅的使用跳板机呢?

答:可以借助 .ssh/config 文件提前配置,让使用更加简单。

Host jumpServerName
  User username
  Hostname jumpServerIp
  Port jumpServerPort

Host host1Name
  User username
  Hostname host1Ip
  Port host1Port
  ProxyCommand ssh -W %h:%p jumpServerName 
  # 或使用 nc 的方式:
  # ProxyCommand ssh jumpServerName nc -w 100 %h %p

你只要使用 ssh host1Name 就可以实现业务机器的登陆了。当然,记得提前使用 ssh-copy-id 进行认证。事实上同样的原理可以应用到别的操作指令上,比如我们常用的 scp 等。剩下的请自行尝试。

0x02 参考链接