优雅地通过跳板机登录公司内网服务器

前言:
  最近入职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 [email protected]
# 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
    优雅地通过跳板机登录公司内网服务器_第1张图片
    证书安装

    在钥匙串中找到Charles Proxy CA,并设置为始终信任。
    优雅地通过跳板机登录公司内网服务器_第2张图片
    证书认证

    ②SSL代理设置
    菜单:Proxy -> SSL Proxying settings,添加需要匹配的域名和端口。
    优雅地通过跳板机登录公司内网服务器_第3张图片
    添加需要匹配的域名和端口

    ③通过macos抓包
    菜单:Proxy -> macOS Proxy
    另外也可以通过ios进行抓包,这里不多说了。
    优雅地通过跳板机登录公司内网服务器_第4张图片
    设置抓包方式

    现在就可以对系统中的网络请求进行抓包啦,这是系统几秒活动的抓包记录:
    优雅地通过跳板机登录公司内网服务器_第5张图片
    部分抓包记录

    ④ 对指定的网络请求抓包
    抓包记录太多难免有点繁琐,一般我们需要的只是某几个特定网页的抓包记录,因此可以考虑指定网络请求:
    菜单:Proxy -> Recording Settings
    优雅地通过跳板机登录公司内网服务器_第6张图片

✅静态密码:shell上执行./sshxyrelay3.sh实现一键登录啦~(嫌弃./sshxyrelay3.sh可以在sh里面alias一下,或者添加到iterm2快捷方式)
✅动态密码:通过抓包产生动态密码的网络请求(可以考虑获取cookie,模拟网页登录请求,产生soft_token)得到最终的登录密码,这个具体脚本,之后再写吧...

后续问题

charles关闭后 无法联网,画个饼,等进公司再来补充吧,好像有点搞砸了

你可能感兴趣的:(优雅地通过跳板机登录公司内网服务器)