背景

日常工作中,经常需要通过跳板机登录线上机器。
而为了安全起见,系统部的同学又启用了otp,动态生成code
给经常登录线上机器的使用者,带来了很大不便

作为iterm2的使用者,其coprocess的功能,可以实现自动登录,极大减少了手工输入动态密码及个人密码的次数。
什么是iterm2的coprocess,可参见其官方说明 coprocesses

实现

一般的跳板机都是先让用户输入动态密码,然后输入个人密码。
那么我们可以写个脚本如下,假设脚本名字为fillme

1
2
3
4
5
6
7
#!/bin/bash
code=$(balabala) # 生成code的shell语句
pass=$(labalaba) # 生成你个人密码的语句

echo ${code}
sleep 0.5        # sleep是防止输入太快跳板机来不及反应
echo ${pass}

设置iterm2,在Preferences -> keysPreferences -> Profiles -> keys下,增加一组Key Mappings
快捷键为⌘\(这是本人前期使用sudolikeaboss的快捷键,现在sudolikeaboss与1password配合起来有问题就放弃了)
Action设置为Run Coprocess
然后将第三个参数设置为上述脚本fillme的绝对路径

接下来,就可以在跳板机的提示符下,按对应的快捷键输入动态口令及密码了。

-EOF-