V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leiuu
V2EX  ›  程序员

登录服务器每次都需要动态验证码,神烦,有无自动填充方法

  •  
  •   leiuu · 2021-10-14 19:17:21 +08:00 · 3543 次点击
    这是一个创建于 1118 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 。

    请教大佬们。

    运维为了增加系统安全性,开启了服务器登录,两步验证。

    每次登录服务器都会按这个流程:

    1. ssh 登录服务器,提示输入验证码
    2. 解锁手机
    3. 打开「谷歌验证码」应用
    4. 记住验证码
    5. 手动输入验证码

    假设需要新开窗口,需继续如上步骤。 有没有半自动、甚至全自动的方法,节省一些繁琐操作。

    27 条回复    2021-10-16 08:10:52 +08:00
    lix7
        1
    lix7  
       2021-10-14 19:21:00 +08:00   ❤️ 2
    开一下 SSH 链接复用就行了
    关键词 ControlMaster
    killva4624
        2
    killva4624  
       2021-10-14 19:23:48 +08:00
    1 楼正解,链接释放前足够一直用了,适合连接需要 2FA 的跳板机。
    mimzy
        3
    mimzy  
       2021-10-14 19:49:18 +08:00 via Android
    如果 OTP 能抓包的话 用 expect 脚本自动登录
    q1angch0u
        4
    q1angch0u  
       2021-10-14 20:00:23 +08:00
    如果是苹果全家桶的话,建议升级 iOS 15 、Safari 15,系统自带的 mfa 体验挺不错的。
    9yu
        5
    9yu  
       2021-10-14 20:02:49 +08:00 via iPhone
    bitwarden 可以在电脑和浏览器上用 OTP
    leiuu
        6
    leiuu  
    OP
       2021-10-14 20:17:52 +08:00
    @lix7
    @killva4624
    牛逼 大佬 丝滑般的感觉
    leiuu
        7
    leiuu  
    OP
       2021-10-14 20:28:12 +08:00
    thx 其他几位大佬

    检索时还发现有一个有意思的方案 share 给大家
    有其他大佬定制了一个「谷歌验证器」 mac 版..
    可以通过脚本获取最新的 code...

    https://github.com/stanzhai/GoldenPassport
    janxin
        8
    janxin  
       2021-10-14 20:43:51 +08:00
    @leiuu 这都有点复杂了,因为有其他语言的命令行工具...
    xmi
        9
    xmi  
       2021-10-14 21:16:18 +08:00
    TOTP 我用的也是 bitwarden
    bitwarden 的 TOTP 支持一般 6 位的
    也支持暴雪 8 位的(otpauth://totp/BattleNet:{NAME}?secret={SECRET}&digits=8&issuer=BattleNet&serial=CC1234567890)
    还支持 steam 数字字母组合形式的(steam://{SECRET})
    skiy
        10
    skiy  
       2021-10-14 22:09:07 +08:00
    ssh 都需要 TOTP ?搞得这么复杂?美曰“安全”?那还不如来个短信验证码,再加个人脸识别。
    leiuu
        11
    leiuu  
    OP
       2021-10-15 11:25:13 +08:00
    @janxin 哈哈哈 单纯被那位大佬的工程能力打动 命令行工具有推荐否


    @xmi bitwarden 我关注一波 thx
    leiuu
        12
    leiuu  
    OP
       2021-10-15 11:25:31 +08:00
    @skiy 别让运维知道...
    JavasBoy
        13
    JavasBoy  
       2021-10-15 11:52:01 +08:00
    sshpass -p "$(/usr/bin/python3 "${DIR}"/otps.py)" /usr/bin/ssh

    otps.py
    #!/usr/bin/python3
    import pyotp

    totp = pyotp.TOTP("XXXXXXXXXXXX")
    print("PASSWD " + totp.now())
    lizuoqiang
        14
    lizuoqiang  
       2021-10-15 11:55:57 +08:00
    1.chrome 有扩展 “身份验证器”
    2.网上有源码可以离线生成验证码,再配合 alfred,很丝滑
    superrichman
        15
    superrichman  
       2021-10-15 11:58:34 +08:00
    下次服务器出问题就拿你开刀 /doge
    leiuu
        16
    leiuu  
    OP
       2021-10-15 12:24:13 +08:00
    @JavasBoy 老哥,Genius !

    补充下。使用 otpauth 协议链接获取动态码。

    totp = pyotp.parse_uri("otpauth://totp/XXX")
    print("PASSWD " + totp.now())
    Alliot
        17
    Alliot  
       2021-10-15 12:54:54 +08:00 via Android
    @skiy 有等保要求的企业会开的。 这个不是很正常么?
    skiy
        18
    skiy  
       2021-10-15 14:39:58 +08:00
    @Alliot 所以我说要加短信验证码和人脸识别不也很正常吗?更提高了安全性,不是吗?

    加了这个 TOTP 的二次验证,不也出现了像楼上这么多人找的解决方案了吗?
    Alliot
        19
    Alliot  
       2021-10-15 16:15:43 +08:00
    @skiy 。。。。大部分的时候,等保只是一些企业要过的一个硬性标准。。。很多人做这些,并不是为了给自己找麻烦而做的,而是不得不做的。
    https://baike.baidu.com/item/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E7%AD%89%E7%BA%A7%E4%BF%9D%E6%8A%A4/2149325?fr=aladdin

    http://science.china.com.cn/2019-05/17/content_40754113.htm
    skiy
        20
    skiy  
       2021-10-15 16:44:46 +08:00
    @Alliot 我知道你想表达的意思啊。国家也没推 “使用谷歌验证器” 的这种二次验证方式吧?在我看来,在中国不流行。君不见,腾讯、阿里等平台的都使用短信验证方式作为 2FA 吗?短信验证和人脸识别不是更符合国情吗?
    ericdeng
        21
    ericdeng  
       2021-10-15 17:59:21 +08:00 via Android
    @skiy 服务器自带发短信功能么?自带人脸识别功能么?短信和人脸识别都需要接入第三方平台,先不谈费用问题,也不谈第三方平台的安全性问题,就谈稳定性。谁能保证第三方平台可以长久且稳定的运行,万一第三方平台出了问题,导致认证无法进行,那运维是准备提桶跑路么?
    skiy
        22
    skiy  
       2021-10-15 19:25:33 +08:00
    @ericdeng 谷歌验证器的难道自带?你能保证你的手机不会被偷?不会坏?保证验证器不会被删除?如果真到这个地步,运维难道就不需要提桶跑路?你要是要扯这个,那你平时多关注 V2 上面多少人谷歌验证器或者微软验证器出现问题的就知道了。当然,你可以说,保存那个 TOTP 密钥出来。谁能保证所有的安全性?

    调侃而已,你都能上纲上线了?
    ericdeng
        23
    ericdeng  
       2021-10-15 20:20:09 +08:00 via Android
    @skiy 啥叫上纲上线,我只是列出了手机验证码和人脸识别在实际应用上的缺点,这也有错?
    ericdeng
        24
    ericdeng  
       2021-10-15 20:27:02 +08:00 via Android
    @skiy 别人都在出谋划策,你倒好,没提点建设性意见也就算了,还去讽刺别人。人家开头都说了,这是运维的设置,说白了他本人也不想,你说的东西除了添堵有什么用,难不成去跟运维打一架,跟他说你们这样设置是不对的?调侃也要看对象啊。
    skiy
        25
    skiy  
       2021-10-15 21:41:33 +08:00
    @ericdeng 难道我不是说了优缺点?人脸识别和短信验证不是一种方式?另外,我并没有讽刺楼主,是你自己认为的。我讽刺的是搞这种多此一举的行为而已,虽然在某些人眼里增加了“安全性”。用密码登录了个账号,还要再用手机微信扫一遍。换手机时,微信还要找“朋友”验证一次。这些不就是安全吗?运维忘记带手机去公司,那一整天都不用工作了,对吧?楼上有人说是“等保”的要求,但我不认为这种 TOTP 方式适合这个场景。

    没必要扯下去了,你有你的想法,我有我的主张。诚如你说的,本来就不是建设性意见。
    realskywalker
        26
    realskywalker  
       2021-10-15 23:40:58 +08:00
    所以系统的安全性最薄弱的环节就是人啊
    whusnoopy
        27
    whusnoopy  
       2021-10-16 08:10:52 +08:00 via Android
    楼上有说换短信和人脸验证,这个你决定不了,最多和运维反馈

    也有说复用 ssh,这个解决了第一次以后后续新增的

    也有怎么在电脑上获取验证码的状态,我用的 authy,手机应用和 macOS 应用都有,可以多设备同步验证账号,支持一键复制验证码,后面粘贴就好,不用自己人肉记住再去一个数字一个数字输入
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3172 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:27 · PVG 20:27 · LAX 04:27 · JFK 07:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.