Mac m2自动登陆跳板机脚本

2023-10-20 11:14:17 浏览数 (3)

需求

需求很简单,通过脚本自动登陆跳板机。 因为最近换的是mac M2,然后碰到了一堆问题。

问题

intel芯片换到m2出现很多问题。 首先mac m2 没有python2,默认是python3,所以脚本的命令要调整成python3相关的。 然后是 ssh 登陆,原来正常可以登陆方式也有问题,默认的ssh密钥失效,需要替换成新的密钥。 就导致原来的免密登陆也失效了,添加了公钥,依然需要输密码,下面的脚本,有一段是补偿输入密码的操作, 如果不需要,可以删了输密码的部份。

自动登陆脚本

需要准备两个脚本:

  1. login.sh, shell 脚本
  2. jump.python, python3脚本
代码语言:javascript复制
#!/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 是谷歌的密钥。

代码语言:javascript复制
#!/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:

代码语言:javascript复制
sh ~/.ssh/jump.sh

不要使用 expect 开头:

代码语言:javascript复制
expect ~/.ssh/jump.sh

这样就可以登陆成功了,即不需要输密码,也不需要验证码。 需要注意的是,如果需要使用lrzsz 这样的功能的话,不可以使用expect执行脚本,会失败,只能使用sh进行登陆。

0 人点赞