需求
需求很简单,通过脚本自动登陆跳板机。 因为最近换的是mac M2,然后碰到了一堆问题。
问题
从intel芯片换到m2出现很多问题。 首先mac m2 没有python2,默认是python3,所以脚本的命令要调整成python3相关的。 然后是 ssh 登陆,原来正常可以登陆方式也有问题,默认的ssh密钥失效,需要替换成新的密钥。 就导致原来的免密登陆也失效了,添加了公钥,依然需要输密码,下面的脚本,有一段是补偿输入密码的操作, 如果不需要,可以删了输密码的部份。
自动登陆脚本
需要准备两个脚本:
- login.sh, shell 脚本
- jump.python, python3脚本
#!/bin/sh
expect -c "
set pwd you_pass_word
spawn ssh -o HostKeyAlgorithms= ssh-rsa -o PubkeyAcceptedKeyTypes= ssh-rsa test@10.10.10.10
set timeout 2
expect "*assword:*"
send "$pwdr"
set timeout 2
expect "[MFA auth]:"
set password "`python3 ~/.ssh/jump.python`"
send "$passwordr"
interact
"
解释上面的脚本
说明一下,新的 ssh 需要输入:
ssh -o HostKeyAlgorithms= ssh-rsa -o PubkeyAcceptedKeyTypes= ssh-rsa
原来 ssh 只需要:
ssh username@10.10.10.10 就可以登陆了
python3 部分
python3 脚本提取google验证码。
my_secret
是谷歌的密钥。
#!/usr/bin/python3
import onetimepass as otp
my_secret = 'XXXXXXXXXXXXX'
my_token = otp.get_totp(my_secret)
print ("d" % my_token)
iterm2 配置
在 Open Profiles 中添加一下自动登陆脚本:
login shell 或 Command 都可以,用sh
:
sh ~/.ssh/jump.sh
不要使用 expect
开头:
expect ~/.ssh/jump.sh
这样就可以登陆成功了,即不需要输密码,也不需要验证码。
需要注意的是,如果需要使用lrzsz
这样的功能的话,不可以使用expect
执行脚本,会失败,只能使用sh
进行登陆。