前言:
最近入职x手,撒花~~,花了好几天开通权限,熟悉服务器使用流程,因为没实习过,遇到很多不懂的知识,冒个泡来讲一下如何减少重复工作,解放生产力。
Jump Server 跳板机
顾名思义,这是一个本地跳到服务器的一个节点,疫情期间无法回学校,在没有使用VPN之前,我是采用teamview来远程连接实验室电脑,然后通过实验室电脑使用服务器资源,其实这台实验室电脑就是跳板机。
本地PC->跳板机->服务器
① 跳板机是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一。
② 跳板机是网络中容易受到侵害的主机,所以跳板机必须是自身保护完善的主机。通常至少配备两块网卡设备,分别具备不同的网络连接:连接外网(用以对目标服务器的远程登录及维护),连接内网(便于内部网络的管理、控制和保护,通过网关服务提供从私网到公网,或从公网到私网的特殊协议路由服务)
公司对安全非常重视 ,用公司内网服务器跑程序,不仅使用跳板机,并且需要固定密码+软token,十分百分的繁琐,都说公司给的环境肯定是比实验室高效的,需要自己去摸索,那有什么方法可以安全又优雅呢?经过摸索,找到了两种方法,我真的太开心了~
方法一:ssh隧道方式
参考文档:
关于ssh隧道
使用Pycharm 连接内网服务器
① 步骤一:config设置
Host *
ControlPersist yes
ControlMaster auto
ControlPath ~/.ssh/%n:%p
vi ~/.ssh/config
追加上述代码,完成配置后本地登录跳板机,并在跳板机上vi ~/.ssh/config
追加上述代码,完成配置后登录内网服务器。
② 步骤二:ssh隧道设置
ssh -N -f -L 6000:web_server@abcdefg:22 amilyxy@xxxx.xxxx.com
# ssh -N -f -L 本地端口:服务器ip:服务器端口 跳板机ip
具体参数解释:
-N 告诉SSH客户端,这个连接不需要执行任何命令,仅做端口转发
-f 告诉SSH客户端在后台运行
-L X:Y:Z 做本地映射端口,将IP为Y的机器的Z端口通过中间服务器映射到本地机器的X端口。
为了脱敏,把公司信息给去掉了,这行命令的作用是建立ssh隧道,通过访问本地6000端口就可以访问服务器22端口,执行完之后会发现.ssh
文件夹下生成了一个文件名为跳板机ip的文件名,这时就可以免密访问跳板机了。
暂时只能到免密登录跳板机了,因为申请资源可能是随机分配资源,所以怎么免密登录到内网服务器还在摸索,画个饼,有缘再来更。
方法二:expect shell
expect shell:
expect是shell中处理交互的工具,通过spawn来执行shell脚本,通过expect捕捉用户需要进行的交互内容,通过send发送交互内容,通过set设置变量值。
基本思路:
① 使用spawn命令执行登录跳板机的命令,一般为ssh user@ip。
② 使用expect来监听该进程的输出。
③ 使用send命令来发送密码给该进程,就完成连接。
具体步骤:
① 步骤一:写脚本
#!/usr/bin/expect
# 用户
set user xieyang
# 固定密码
set passwd_prefix *******.
# 连接固定密码+softtoken(如果为固定密码,可忽略该参数
# 抓包得到的cookie
set cookie "*****"
# 这里是通过cookie获取的token
# concat 固定密码+token
set passwd "$passwd_prefix [lindex $argv 0]"
# 跳板机ip
set ipaddress xxx.xxxx.com
# 选择system list (实习生好像不需要选择device
set syslist 2
spawn ssh $user@$ipaddress #执行ssh
expect {
"*Password:" { send "$passwd\r" }
"Please select system" { send "$syslist\r" }
}
interact
将脚本保存为sshxyrelay3.sh,并通过chowd 777 sshxyrelay3.sh
添加权限,如果你是静态密码登录可以直接跳过步骤二。
② 步骤二:监听soft_token的输出
公司内部会有产生soft_token入口,如何自动化获取动态密码,可以考虑charles抓包,关于charles的介绍,这里说的很详细了,下面为macos下charles的抓包过程:
- 安装charles
官网安装新版本的charles ,最新版的试用期为一个月,可以去网上搜一下激活账户进行register。 - 设置charles
① 证书安装与认证
菜单:help -> SSL Proxying -> Install Charles Root Certificate
证书安装
在钥匙串中找到Charles Proxy CA,并设置为始终信任。
证书认证
②SSL代理设置
菜单:Proxy -> SSL Proxying settings
,添加需要匹配的域名和端口。
添加需要匹配的域名和端口
③通过macos抓包
菜单:Proxy -> macOS Proxy
另外也可以通过ios进行抓包,这里不多说了。
设置抓包方式
现在就可以对系统中的网络请求进行抓包啦,这是系统几秒活动的抓包记录:
部分抓包记录
④ 对指定的网络请求抓包
抓包记录太多难免有点繁琐,一般我们需要的只是某几个特定网页的抓包记录,因此可以考虑指定网络请求:
菜单:Proxy -> Recording Settings
✅静态密码:shell上执行./sshxyrelay3.sh
实现一键登录啦~(嫌弃./sshxyrelay3.sh
可以在sh里面alias一下,或者添加到iterm2快捷方式)
✅动态密码:通过抓包产生动态密码的网络请求(可以考虑获取cookie,模拟网页登录请求,产生soft_token)得到最终的登录密码,这个具体脚本,之后再写吧...
后续问题
charles关闭后 无法联网,画个饼,等进公司再来补充吧,好像有点搞砸了
网友评论