教你如何让SSH使用一次性密码登陆
前言
彩色文字认证系统privacyIDEA是一个模块化认证系统,一个认证服务器,由python编写的一款提供一次性密码即OTP(One Time Password)的开源软件,支持多种不同的数据来源:如flat files,不同的LDAP服务,SQL数据库和SCIM服务。认证方面可以对接radius。
工具的安装与配置
话不多说,先上安装文档地址 【[传送门](http://privacyidea.readthedocs.io/en/v2.19/installation/index.html)】ubunutu与CentOS都有官方的包,如果找不到包的话可以用pip去构建,╮( ̄▽ ̄”)╭真齐全。
这边的话我是用ubunutu构建.简单的几句apt搞定
> add-apt-repository ppa:privacyidea/privacyidea
apt-get update
apt-get install python-privacyidea privacyideaadm
apt-get install privacyidea-apache2
apt-get install privacyidea-radius #用于将RADIUS请求转换为privacyIDEA服务器的API
apt-get install privacyidea-simplesamlphp #通过simpleSAMLphp 的插件支持SAML
apt-get install privacyidea-pam #可以对任何Linux系统添加双因素身份验证(可以用本身的密码或者OTP登陆)
apt-get install privacyidea-otrs #
完成后直接访问https://ip 安装apache后默认是开启ssl的.也可以用python runserver的方式去启动服务.
用户名密码通过创建 -e 后面加的是用户名
freeradius安装以及对接使用
ubnutu下直接使用apt进行安装
> apt-get install libpam-radius-auth freeradius
修改 /etc/pam.d/sshd 在开头添加以下这句
> @include otp-auth
接着复制文件
> cp /etc/pam.d/common-auth /etc/pam.d/otp-auth
otp-auth内容如下
> auth [success=3 default=ignore] pam_radius_auth.so
auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_ecryptfs.so unwrap
auth optional pam_cap.so
添加radius服务器
手机端的工具安装
可以采用[freeotp](http://downloads.tomsguide.com/FreeOTP,0301-56679.html)或者是谷歌认证器通过扫描二维码使用 安卓版
添加用户TOKENS
(・。・)接下来就可以在putty或者xshell进行认证了,可以用原来的密码或者是PIN+OTP进行登陆.
认证成功的radius登陆日志
结论
一次性密码有好有坏,可以免除一些外来的密码入侵。通过api甚至可以将其扩展到网页认证之类的。
附:从百度偷取的应用图