通过sh脚本登录跳板机

确认系统的expect命令

编写自动登录脚本我们需要使用expect命令,如果没有安装可以通过以下方式安装

  • fedora/centos/readhat yum|dnf install expect
  • debian/ubuntu apt install expect
  • macos brew install expect

接下来以macos系统为例进行演示,其他系统基本相同

安装python3与pyotp库

二次验证的密码生成方式一般使用基于时序的算法,我们可以使用python的pyotp库来生成密码

首先安装python3,如果系统已有python3可以跳过,通过命令brew install python3安装,然后使用pip安装扩展库pyotp,命令pip3 install pyotp

编写自动登录脚本

命令vim /usr/local/bin/go-jump-server,将如下内容粘贴进去,并修改相应的区域

#!/usr/bin/expect

set otp [exec python3 -c "import pyotp; print(pyotp.TOTP('你的SECRET字符串').now(), end='')"]

spawn ssh user@jump-server-host

expect "Password:" { send "你的跳板机用户密码\n" }

expect "*code:" { send "$otp\n" }

interact

其中第7和第9行的Password:*code要与你的跳板机在终端输出的内容相匹配,具体expect命令的使用规则可以参考expect的相关教程

最后,对这个脚本赋予执行权限chmod +x /usr/local/bin/go-jump-server

FAQ

怎么获取到SECRET字符串?
在你进行两步验证绑定的时候,一般会给你一个二维码,此二维码通过支付宝的身份宝或者谷歌的谷歌身份验证器扫描后会保存并自动生成验证码,这里需要的SECERT即包含在这个二维码的内容里,可以使用其他任何二维码扫描软件(微信不行)进行扫描,能够解析出二维码的原始内容,其内容类似如下

otpauth://totp/your_user_name%40your_site_name?secret=XXXXXXXXXXXX

原文地址:https://blog.luna.xin/article/21.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容