python如何登录开启totp认证的linux服务器

Python可以通过使用paramiko库结合TOTP(基于时间的一次性密码算法)应用来实现登录开启TOTP认证的Linux服务器。其中,TOTP认证过程需要生成符合服务器要求的一次性密码,这常常通过一个TOTP客户端来完成、必须保证客户端与服务器时间同步。通常首选的Python TOTP库是pyotp,它可以生成兼容的一次性密码。结合paramiko和pyotp,可以完成一个SSH客户端,通过TOTP认证登录Linux服务器。
TOTP(Time-Based One-Time Password)算法生成的密码是基于时间的动态密码,这意味着每隔一定时间这个密码就会发生改变。在服务器端,TOTP可以增强安全性,它通常与用户名和密码的双因素认证配合使用。
SSH(Secure Shell) 是一种网络协议,用于安全地通过不安全的网络访问远程计算机。Python的paramiko库提供了一个SSH的客户端实现。
在开始前,需要确保Python环境安装有paramiko和pyotp库。可以使用pip来安装这些库。
pip install paramiko pyotp
在获取TOTP秘钥后,服务器就可以要求客户端在每次登录时提供基于该秘钥和当前时间生成的一次性密码。
为了使用TOTP,在需要事先共享一个秘钥,它被用来在服务器和客户端之间生成一次性密码。pyotp可以使用该秘钥来生成密码。
import pyotpTOTP_SECRET = '你的TOTP秘钥'
totp = pyotp.TOTP(TOTP_SECRET)
one_time_password = totp.now() # 生成当前时间的TOTP一次性密码
print("当前一次性密码:", one_time_password)
此段代码可以生成用于身份验证的当前有效的一次性密码。
接下来,需要构建一个paramiko SSH客户端来尝试连接到服务器。
import paramiko创建SSH对象
ssh = paramiko.SSHClient()
自动接受不在本地known_hosts文件的主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
连接服务器
try:
ssh.connect(hostname='服务器IP', username='你的用户名', password='你的常规密码')
except paramiko.ssh_exception.AuthenticationException:
# 如果常规密码认证失败,则尝试TOTP一次性密码
ssh.connect(hostname='服务器IP', username='你的用户名', password=one_time_password)
最后,需要把生成TOTP一次性密码的步骤和创建SSH连接的步骤放到一起,形成一个完整的登录流程。
import paramikoimport pyotp
def ssh_totp_login(host, username, regular_password, totp_secret):
totp = pyotp.TOTP(totp_secret)
one_time_password = totp.now()
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
# 尝试使用常规密码登录
ssh.connect(hostname=host, username=username, password=regular_password)
print("使用常规密码登录成功")
except paramiko.ssh_exception.AuthenticationException as e:
# 如果常规密码认证失败,则尝试TOTP一次性密码
try:
ssh.connect(hostname=host, username=username, password=one_time_password)
print("使用TOTP一次性密码登录成功")
except paramiko.ssh_exception.AuthenticationException:
print("登录失败,请检查用户名、密码、以及TOTP密码是否正确")
ssh.close()
return
# 登录成功...
# 这里可以执行命令,处理数据...
# 关闭连接
ssh.close()
调用函数进行登录
ssh_totp_login('服务器IP', '你的用户名', '你的常规密码', '你的TOTP秘钥')
核心重点内容:
pyotp生成TOTP一次性密码paramiko实现SSH协议的连接在实际操作中,请确保替换代码中的服务器IP、你的用户名、你的常规密码和你的TOTP秘钥为实际的值。同时,对于生产环境,应当考虑错误处理、日志记录、以及密码的安全存储等方面的需求。
1. 如何在Python中实现登录开启TOTP认证的Linux服务器?
TOTP(Time-based One-Time Password)是一种基于时间的一次性密码认证机制,可用于增强Linux服务器的安全性。要在Python中实现登录开启TOTP认证的Linux服务器,可以按照以下步骤进行操作:
下面是一个简单的示例代码:
import paramiko
import time
import onetimepass
def login_with_totp(server_ip, username, password):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server_ip, username=username, password=password)
# 执行开启TOTP认证的命令,具体命令根据Linux发行版而定
command = "sudo totp-setup"
ssh.exec_command(command)
# 生成动态密码
totp_secret = "your_totp_secret_key" # 替换为实际的TOTP密钥
dynamic_password = onetimepass.get_totp(totp_secret)
# 将动态密码传递给服务器进行认证
stdin, stdout, stderr = ssh.exec_command(dynamic_password)
ssh.close()
# 使用示例:
login_with_totp("服务器IP地址", "用户名", "密码")
2. Python中如何生成TOTP动态密码用于登录Linux服务器?
在Python中生成TOTP动态密码,可以使用onetimepass模块。该模块实现了基于RFC 6238标准的TOTP算法,可以方便地生成动态密码。
以下是一个简单的代码示例:
import onetimepass
def generate_totp_password(secret_key):
dynamic_password = onetimepass.get_totp(secret_key)
return dynamic_password
# 使用示例:
totp_secret_key = "your_totp_secret_key" # 替换为实际的TOTP密钥
password = generate_totp_password(totp_secret_key)
print("动态密码:", password)
3. 如何在Linux服务器上开启TOTP认证?
要在Linux服务器上开启TOTP认证,可以按照以下步骤进行操作:
具体操作步骤因Linux发行版而异,可以参考相应的文档或教程进行操作。
最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台:织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。
相关文章推荐
织信低代码开发“核心引擎”与“拓展能力”介绍
低代码平台不能只看表单、流程和页面。真正进入企业管理场景后,更重要的是底层能不能承载数据、权限、流程、集成、自动化和AI能力。
织信低代码平台的能力,可以分成两部分:核心引擎和拓展能力。核心引擎决定系统能不能搭起来、跑起来;拓展能力决定系统能不能接入更多业务场景,持续扩展。
一、核心引擎:支撑企业应用运行
1、数据建模引擎
织信以数据模型为基础,支持数据表、字段、记录、关联关系等能力。企业可以围绕客户、供应商、项目、合同、物料、设备、工单、库存等业务对象搭建系统,而不是只做一张张孤立表单。
它的价值在于:先把业务数据结构建清楚,再承接流程、权限、报表、接口和AI能力。这是织信区别于轻量表单工具的重要特点。
2、流程自动化引擎
织信提供工作流能力,支持审批、任务、变量、事件、子流程、多实例、多版本等机制。企业可以用它搭建采购审批、合同审批、项目立项、设备维修、费用报销、异常处理等流程。
流程自动化的价值,不只是线上审批,更是把责任、状态、节点和处理记录留在系统里,让业务可追踪、可复盘。
3、权限治理引擎
织信支持组织、部门、用户、角色、应用成员、应用角色等权限管理能力,可以根据岗位、部门和业务场景配置访问范围和操作权限。
企业系统里,不同部门看到的数据、能修改的字段、能审批的节点都不同。权限治理做细,系统才能既安全,又能正常协同。
4、自动化与脚本引擎
织信支持自动化、定时任务、监听器、脚本、HTTP请求等能力,可以在数据变化、流程变化或时间条件满足时自动触发动作。
例如自动提醒、自动校验、自动同步、自动生成记录、自动调用接口。这样系统不只是记录工具,也能参与业务执行。
二、拓展能力:支撑复杂场景扩展
1、系统集成能力
织信支持WebAPI、开放接口、HTTP、JDBC、消息队列、第三方集成、单点登录等能力,可以连接ERP、MES、CRM、OA、财务系统、钉钉、企业微信、飞书、LDAP、数据库等系统。
这让织信既能搭建新应用,也能作为企业系统之间的协同层。
2、界面与组件拓展能力
织信提供表单设计器、组件设计器、自定义组件字段、自定义视图、仪表盘、网站页面等能力,可以根据不同业务场景设计页面、看板和操作入口。
这使企业既能快速搭建标准应用,也能针对复杂需求做个性化扩展。
3、AI Agent能力
织信官方文档将其定位为企业级AI开发平台,强调数据建模、流程自动化、权限治理、系统集成与AI Agent能力。
在织信中,AI能力可以结合知识库、专家、技能、智能体、设计器智能体等模块,参与应用搭建、数据分析、流程辅助和业务处理。
更重要的是,织信的AI能力建立在数据、流程、权限和系统集成之上。这样AI进入企业系统时,能明确数据范围、操作边界和审批要求。
三、织信的独特之处
织信不是单点工具,而是企业信息化AI开发底座。
它既有低代码平台常见的表单、流程、权限、报表和自动化能力,也具备企业级系统需要的集成、部署、运维、SSO、信创适配、私有化部署等能力,同时把AI Agent纳入应用建设过程。
因此,织信更适合有复杂业务系统建设需求的企业。比如项目管理、OA、ERP扩展、MES补位、WMS、SRM、CRM、设备管理、人事管理等场景,都可以基于织信进行搭建和扩展。
简单来说,织信的价值在于:把数据模型、业务流程、权限治理、自动化执行、系统集成和AI能力放在同一个平台里,让企业系统搭得快、管得住、连得上,也能持续扩展。
各行业用户的共同选择







