近日,公司在跳板机前架设了堡垒机,以防止ssh攻击,但这带来一个问题,我们平常直接ssh跳板机,可以直接使用scp来上传或下载跳板机数据到本地
架设堡垒之后经常使用的scp工具不好用了
于是本期就来解决跨堡垒机实现scp问题,解决方案同样适用阿里云子账号实现
常见堡垒-跳板-ECS结构拓扑图:
堡垒机、跳板机、服务器处于相同网段,可以直接内网访问,只留下堡垒机一个出口供外部使用
在上述拓扑中,本地和堡垒机实现了ssh便捷登录(普通堡垒机只需要保存本地公钥即可,阿里云堡垒机需配置子账号认证)
堡垒机和跳板机实现了ssh便捷登录,我们假设本地登录堡垒机ssh信息如下:
堡垒机开放ssh端口:60022
堡垒机域名:xxxxxx-public.bastionhost.aliyuncs.com
堡垒机IP:47.104.69.199
普通堡垒机登录:
admin@AdmindeMacBook-Pro-3 ~: ssh -p 60022 root@47.104.69.199
阿里云堡垒机登录:(dongxixi为子账号)
admin@AdmindeMacBook-Pro-3 ~: ssh -p 60022 dongxixi@xxxxxx-public.bastionhost.aliyuncs.com
通过以上命令我们可以轻松登录堡垒机(普通堡垒机直接登录,阿里云堡垒机需要继续输入子账号密码和MFA code)
我们假设跳板机ssh信息如下(只允许内网访问):
跳板机开放ssh端口:22
跳板机IP:47.105.21.22
当我们站在堡垒机上时,可以通过以下命令直接登录跳板机
root@47.104.69.199 ~:ssh 47.105.21.22
当上述流程都ok时,我们就开始配置本地ssh,实现跨堡垒机scp了
进入本地ssh配置目录:
admin@AdmindeMacBook-Pro-3 ~: cd ~/.ssh/
编辑config文件
admin@AdmindeMacBook-Pro-3 ~: vi config
如果本地存在config文件则追加,不存在则新建即可,以下配置根据自己实际填写
# 堡垒机配置 Host为别名 HostName可以是解析后的域名,也可以是ip,User为登录的用户 Host bastion HostName xxxxx-public.bastionhost.aliyuncs.com # 或 47.104.69.199 User dongxixi Port 60022 # 跳板机配置 Host jumper HostName 47.105.21.22 User root Port 22 Host jumper ProxyCommand ssh -A -q bastion -W %h:%p
esc + wq!保存退出
接下来测试配置是否成功
# 上传测试,如果堡垒机是阿里云堡垒机,回车后会提示输入子账号密码和MFA code
admin@AdmindeMacBook-Pro-3 ~: scp -r ~/Downloads/test.txt jumper:~/
# 执行后如果没有报错,自行上跳板机查看是否存在相应文件
# 下载测试,如果堡垒机是阿里云堡垒机,回车后会提示输入子账号密码和MFA code
admin@AdmindeMacBook-Pro-3 ~: scp -r jumper:~/test.txt ~/Downloads
多堡垒机、多跳板可在上述方案基础上继续改造!
谢谢!