[阿里云堡垒机]如何优雅使用SCP
背景
最近公司在服务器前面加了一个堡垒机,并且禁用了服务器的SSH外网访问权限。开始的时候都是那么人畜无害,直到有一天需要更换ssl证书的时候,发现scp命令没有办法使用。最后临时的方案是上传到文件服务器,然后在下载。
前提条件
- 请确保个人电脑与堡垒机网络连接正常且可以正常登录堡垒机。
- 已将运维的服务器的账户、密码托管至堡垒机。
- 已在堡垒机上为使用个人电脑的堡垒机用户完成用户授权。
生命不惜折腾不止(操作步骤)
以下步骤以mac系统为例
vim .ssh/config
如果没有可以自己创建,如果不知道如何创建。emm… “mkdir ~/.ssh && vim ~/.ssh/config” 然后沾下一下内容就好了。
# 堡垒机
# 堡垒机别名
Host bastion
# 堡垒机IP/地址
HostName xxxxx.bastionhost.aliyuncs.com
# 堡垒机用户名(本地账号、AD/LDAP账号、RAM子账号)
User user_test
# 堡垒机端口 默认为60022
Port 60022
#服务器1
#服务器1的别名,如果服务器没有使用别名,请删除别名的配置
Host test1
# 服务器IP/地址 一般用的是内网IP
HostName xxx.xx.xx.xx
# 服务器账号 主账户授权给你的用户名 或者 在登录的时候重新指定也可以
User user_test
# 服务器端口 默认为22 一般情况下都不是22哈
Port 22
# 设置为堡垒机代理命令 bastion 是堡垒机的别名哈
ProxyCommand ssh -W %h:%p bastion
#服务器2
#服务器2的别名,如果服务器没有使用别名,请删除别名的配置
Host test1
# 服务器IP/地址 一般用的是内网IP
HostName xxx.xx.xx.xx
# 服务器账号 主账户授权给你的用户名 或者 在登录的时候重新指定也可以
User user_test
# 服务器端口 默认为22 一般情况下都不是22哈
Port 22
# 设置为堡垒机代理命令 bastion 是堡垒机的别名哈
ProxyCommand ssh -W %h:%p bastion
注意
- 操作此步骤请保证,前提条件都已完成。
- 服务器端口 默认为22,但是为了系统安全 ssh 的端口都不是 22 ,具体联系公司运维同学。
- 堡垒机的用户名 一般为ram 的用户名,每个人都是不同的。
- 服务器的用户名 一般一个角色组的都是一样的,是管理员给你授权的账户组里的一个就可以。如果有多个后面可以修改的。
测试一下
SCP上传文件
scp ~/Downloads/1.txt test1:~/
SCP下载文件
scp test1:~/1.txt ~/Downloads/
注意
- test1 就是在配置文件中的服务器别名
- 如果连接服务器时出现错误提示:ssh_exchange_identification: Connection closed by remote host,请删除~/.ssh/known_hosts文件,然后再次执行上述命令,重新连接服务器。
ssh运维
ssh test1
rsync 上传
rsync -avp ~/1.txt test1:/
rsync 下载
rsync -avp test1:~/1.txt ~/Downloads/
目前未解决的问题
1. 数据库通过堡垒机进入服务器然后搭建ssh代理
因为测试RDS,只能在测试服务器链接。原来的方案是通过测试服务器做代理,使用了堡垒机之后测试服务器就不在对外网访问了,所以这个方式就失效了。试过ssh config 别名方式作为代理ssh 的 host,不过并不生效。后续可能的方案就是使用官方提供的方案了。rds和自建数据库 通过堡垒机链接,然后使用数据库运维令牌的方案。emm 比较麻烦。官方文档传送门
2. 堡垒机使用秘钥登录
这个还没有思路,后续解决了在把坑填上吧。