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

求ssh两步验证方案

  •  
  •   lfzyx ·
    lfzyx · 2013-10-14 10:20:36 +08:00 · 4821 次点击
    这是一个创建于 4065 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在网上搜了下都是利用Google Authenticator实现ssh两步验证,但我想把验证方式改为email接收验证码,有没有实现该功能的可行方法?
    16 条回复    1970-01-01 08:00:00 +08:00
    jyhmijack
        1
    jyhmijack  
       2013-10-14 10:22:21 +08:00
    我们就是这样子的。。验证码发邮件和短信。。不过不知道sa是怎么做到的
    zhujinliang
        2
    zhujinliang  
       2013-10-14 10:27:47 +08:00
    把用户的shell改成验证程序?ssh连入后,先进验证程序,验证后由验证程序启动bash。
    不知可行不
    lfzyx
        3
    lfzyx  
    OP
       2013-10-14 10:29:00 +08:00
    @jyhmijack 我在网上居然搜不到类似的方案,难道是各家心照不宣的黑技术?。。
    kennedy32
        4
    kennedy32  
       2013-10-14 10:32:47 +08:00
    google了一下 http://ben.akrin.com/?p=1068
    2-factor authentication & writing PAM modules for Ubuntu
    jyhmijack
        5
    jyhmijack  
       2013-10-14 10:34:26 +08:00
    @lfzyx 觉得应该不是什么很难实现的东西吧。。。应该很好做。。。
    lfzyx
        6
    lfzyx  
    OP
       2013-10-14 10:35:43 +08:00   ❤️ 1
    @kennedy32 哈哈,我也是找到了这个
    kennedy32
        7
    kennedy32  
       2013-10-14 10:36:46 +08:00
    @lfzyx 这个不就是email方案么?应该还可以实现sms方案
    megaforce
        8
    megaforce  
       2013-10-14 10:50:18 +08:00
    我是这样做的:
    机器上只开放9019端口(用iptables做)
    启动nginx服务,监听9019端口。先经过http auth。
    server {
    listen 9010 default;
    return 401;
    }
    server {
    listen 9010;
    server_name myentry.xxx.xxx.cn;
    access_log /logs/access.log;
    error_log /logs/error.log;
    root /webdir;
    location / {
    auth_basic "Restricted";
    auth_basic_user_file /tmp/aaa;
    }

    }

    再到一个php界面,再做一次密码认证,成功后将用户的ip写到一个数据库。
    这里可以再用php做一个邮箱账号的认证,比如用户输入了xxx,php将一个code发到所对应的 [email protected] ,让用户输入 [email protected] 里面的code,才完成验证。



    后台程序每隔一定时间从数据库里面取出ip,用iptables添加该ip到ssh允许的端口。

    后台程序每隔一小时再将这个ip从iptables中去除掉
    gihnius
        9
    gihnius  
       2013-10-14 11:22:55 +08:00
    有钱的话直接上 token,(网银用的那种 token)
    ETiV
        10
    ETiV  
       2013-10-14 11:28:34 +08:00 via iPhone
    phonegap 写一个手机端的令牌App

    然后服务器上也部署一个算号、验证逻辑

    SSH登录执行个脚本,让输入用户名跟令牌

    如果不对了,就kill掉脚本的父进程(bash)
    lixm
        11
    lixm  
       2013-10-14 11:54:43 +08:00
    用pam模块,但是发邮件太慢了吧,等到收到邮件,token都过期了,用Google Authenticator就可以了,现在智能机那么普及了
    halfbloodrock
        12
    halfbloodrock  
       2013-10-14 12:17:48 +08:00
    可能理解的不太对,你两次验证的目的是证明登录人是合法的?

    如果这样的话,用kerberos。
    toctan
        13
    toctan  
       2013-10-14 13:08:22 +08:00
    sobigfish
        14
    sobigfish  
       2013-10-14 16:18:36 +08:00
    cloudzhou
        15
    cloudzhou  
       2013-10-14 18:50:03 +08:00
    对 openssh 做 patch,我做过了,为的是 git 认证,难度不大的
    solos
        16
    solos  
       2013-10-14 21:22:59 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2875 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:29 · PVG 14:29 · LAX 22:29 · JFK 01:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.