服务器ssh
如果被别人登陆就是一场灾难,所以我研究了ssh
认证,我发现Google Authenticator PAM
可以实现ssh
的2fa
认证,但是安装和配置比较麻烦。因此我用python
实现了ssh
的2fa
认证。考虑到很多Linux
服务器默认安装python
,所以我用py
脚本,并只使用标准库,不需要安装第三方py
库,方便部署。
/bin/login
,设置执行权限:chmod +x /bin/login
,记得修改TOTP_SECRET
密钥#!/bin/env python
import os
import sys
import signal
import getpass
import subprocess
import hmac
import time
import base64
import hashlib
# 随机生成长度为16的全大写字符串作为2fa的密钥
TOTP_SECRET = 'KHGSRAEPVAFPPAGX'
try:
def gen_totp(secret: str, input=int(time.time()/30), digits=6):
if (missing_padding := len(secret) % 8) != 0:
secret += "=" * (8 - missing_padding)
byte_secret = base64.b32decode(secret, casefold=True)
result = bytearray()
while input != 0:
result.append(input & 0xFF)
input >>= 8
byte_input = bytes(bytearray(reversed(result)).rjust(8, b"
参与评论
手机查看
返回顶部