首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何以非交互方式向ssh提供基于时间的一次性密码?

以非交互方式向SSH提供基于时间的一次性密码,可以使用动态口令(One-Time Password,简称OTP)技术。OTP是一种基于时间同步的身份验证方法,通过每隔一段时间生成一个动态密码来增强安全性。

实现这种方式的常用工具是Google Authenticator,它可以生成基于时间的OTP。以下是详细步骤:

  1. 在服务器上安装和配置Google Authenticator:
    • 安装Google Authenticator库:sudo apt-get install libpam-google-authenticator
    • 编辑SSH PAM配置文件:sudo nano /etc/pam.d/sshd
    • 在文件末尾添加以下行:# Google Authenticator auth required pam_google_authenticator.so
    • 保存并关闭文件。
    • 执行以下命令以为用户生成密钥:google-authenticator
      • 选择“y”来允许使用基于时间的一次性密码。
      • 选择“y”来允许使用基于计数的一次性密码。
      • 选择“y”来允许保存密钥的方式。
      • 选择“y”来允许使用多个设备进行身份验证。
      • 扫描二维码或手动输入密钥到Google Authenticator应用程序中。
  2. 配置SSH服务器以使用OTP:
    • 编辑SSH配置文件:sudo nano /etc/ssh/sshd_config
    • 找到并确保以下行处于启用状态:ChallengeResponseAuthentication yes UsePAM yes
    • 保存并关闭文件。
    • 重启SSH服务:sudo service ssh restart
  3. 使用OTP进行身份验证:
    • 打开Google Authenticator应用程序,获取当前的动态密码。
    • 使用SSH客户端连接到服务器。
    • 在提示输入密码时,输入您的用户密码,然后输入Google Authenticator应用程序中的动态密码。

这样,您就可以通过非交互方式向SSH提供基于时间的一次性密码进行身份验证。

请注意,以上步骤是基于Linux系统的示例,不同操作系统和环境可能会有所不同。此外,还有其他OTP工具可供选择,如Duo Security、Authy等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

这条命令帮我在一分钟内修改了200台远程服务器密码

好了,下面让我们一起聊聊服务器之间远程交互一些有趣遭遇和处理方式,把好方法分享给大家。...二、技术分享 1.什么是sshpass sshpass是一个很棒交互SSH登录工具,ssh与sshpass区别: ssh登录需要与用户进行交互,需要用户输入密码,做了免密除外。...,要么是无密码 SSH 登录或基于密钥 SSH 身份验证。...如果你想自动在 SSH 登录提示符中提供密码和用户名怎么办(想跟命令写到一起)?这时 sshpass 就可以帮到你了。...sshpass 是一个简单、轻量级命令行工具,通过它我们能够命令提示符本身提供密码(交互密码验证),这样就可以通过 cron 调度器执行自动化 shell 脚本进行对远程服务器各种操作。

2.1K20

SSH 工作原理

为什么要引入SSH? 一言以蔽之,就是因为网络不安全性! 传统网络通信方式telnet,rlogin,FTP,http 都是以明文方式传送用户名和密码进行身份验证,这是十分危险。...密码认证方式和密钥认证方式分别如何实现,有何差异 .........key对服务端身份进行认证 服务端验证请求者身份:提供安全性较弱用户密码方式,和安全性更强per-user public-key signatures;此外SSH还支持与第三方安全服务系统集成,...客户端认证阶段 SSH提供多种客户端认证方式。...Password Password方式即客户端提供用户和密码,服务端对用户和密码进行匹配,完成认证。类Unix系统中,OpenSSH框架,一般通过系统本地接口完成认证。

2K10
  • 如何在CentOS上使用双重身份验证

    默认情况下,您需要密码才能登录,您还可以配置密钥对以获得更高安全性。但是,我们还可以用另外一种方法令其更安全:那就是基于时间一次性密码(TOTP)。...要了解这些密码与您已使用密码之间区别,让我们来分解一下TOTP概念: 基于时间 - 生成密码将每30-60秒更改一次。这意味着如果攻击者试图使用蛮力破解,几乎是不可能。...生成密钥: gen-oath-safe example-user totp 替换example-user为您启用双因素身份验证用户名。totp选项指定基于时间一次性密码,而不是基于计数器密码。...但是,在所有用户提供双重凭证之前,不应该这样做。 重新启动SSH守护程序以应用这些更改: sudo systemctl restart sshd 恭喜!现在启用了双重身份验证。...当您通过SSH连接到CVM时,身份验证过程将按如下方式进行: 注意 如果您SSH客户端在您输入双重令牌之前断开连接,请检查是否为SSH启用了PAM。

    2K30

    如何为Linux系统中SSH添加双重认证

    在这种多重认证系统中,用户需要通过两种不同认证程序:提供他们知道信息( 用户名/密码),再借助其他工具提供用户所不知道信息( 用手机生成一次性密码)。...为了鼓励广泛采用双因子认证方式,Google公司发布了Google Authenticator,一款开源,可基于开放规则( HMAP/基于时间)生成一次性密码软件。...在本教程中,我们将叙述集成OpenSSH和Google提供认证器实现如何为SSH服务设置双因子认证。...如果选择"Enter provided key"选项,你可以使用键盘输入验证密钥,如下图所示: 无论采用上述两种选项任何方式,一旦成功,你将看到注册成功提示和一次性密码,如下图所示: 为SSH服务器用...现在和往常一样,使用SSH登录终端 $ ssh user@ssh_server 当提示你输入验证码时候,输入我们刚获得验证码。验证成功后,再输入SSH登录密码

    2.9K50

    如何在Ubuntu 14.04上为SSH设置多重身份验证

    介绍 一个认证因素是单件使用信息,以证明你有权要执行操作,登录到系统中。认证信道是认证系统提供了一个因子给用户或要求用户回答方式。...OATH-TOTP(开放式身份验证基于时间一次性密码)是一种开放式协议,可生成一次性密码,通常为每30秒回收一次6位数密码。...没有服务器同学可以在这里购买,不过我个人更推荐您使用免费腾讯云开发者实验室进行试验,学会安装后再购买服务器。 添加了SSH密钥sudoroot用户。...第一个问题是验证令牌是否应该是基于时间。 此PAM允许基于时间基于顺序令牌。使用基于顺序标记意味着代码从某个点开始,然后在每次使用后递增代码。...使用基于时间令牌意味着代码在经过一定时间后随机变化。我们会坚持基于时间,因为这就像Google身份验证器这样应用程序所期望,所以回答是的。

    1.4K00

    玩转企业常见应用与服务系列(十):自动应答工具 expect 原理与实践

    Expect 是用于自动化交互式应用程序。 软件介绍 现代 Shell 对程序提供了最小限度控制(程序开始/停止/关闭等),而把交互特性留给了用户。...这意味着有些程序,你不能交互运行,比如说 passwd 命令。有一些程序可以交互运行,但在很大程度上丧失了灵活性,比如说 fsck 命令。这表明 Unix 工具构造逻辑开始出现问题。...Expect 是在 Tcl 基础上创建起来并且还提供了一些 Tcl 所没有的命令: spawn命令激活一个 Unix 程序来进行交互运行 send命令进程发送字符串 expect命令等待进程某些字符串且支持正规表达式并能同时等待多个字符串...4 个命令使用方式 我们知道,send 命令用于发送信息到进程中,expect 命令则是根据进程反馈信息进行对应逻辑交互。..."$mypassword\r" } # 出现密码提示,发送密码 } interact # 交互模式,用户会停留在远程服务器上面 自动登录 ssh 执行命令 #!

    20210

    为你CVM设置SSH密钥吧!

    一些是你是本身就有的,就像你指纹或声音 本文将简介OATH-TOTP(基于开放身份验证一次性密码)是一种开放协议,它生成一个一次性使用密码,通常是一个6位数,每30秒回收一次。...第一个问题是,身份验证令牌是否应该是基于时间。...Do you want authentication tokens to be time-based (y/n) y PAM允许基于时间或顺序令牌,使用基于时间令牌意味着验证码在经过一定时间后会随机变化...现在,我们可以在两个不同通道上使用我们知道东西(密码)和两种不同类型东西(SSH密钥和验证代码)。 到目前为止,本文已经概述了如何使用SSH密钥和基于时间一次性密码启用MFA。...技巧4-使用配置管理自动设置 google-authenticator支持命令行开关,以设置单个交互式命令中所有选项。

    2.8K20

    expect用法介绍

    一、概念 Expect是UNIX系统中用来实现自动化控制和测试软件工具,作为Tcl脚本语言一个扩展应用在交互式软件中,Telnet、FTP、SSH等。...执行shell脚本,需要从终端得到输入时(ssh root@192.168.1.2),Expect可以根据提示,模拟标准输入来实现交互脚本执行 可以把shell和expect理解为两种不同脚本语言,...expect有独自语法、变量 二、ssh远程主机方式 2.1.简单方式,直接使用expect命令 #!...{ send "${ PWD}\r"} #传递给交互终端指令,这里是发送密码。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3K31

    ansible安装部署步骤

    目录 Ansible概述 1、关闭防火墙 2、安装相关软件 3、修改主机清单 4、创建密钥对,进行远程连接 5、将公钥上传到被监控端 6、设置ssh交互登录 Ansible概述 Ansible可以同时管理...ansible是新出现自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)优点,实现了批量系统配置、批量程序部署、批量运行命令等功能...ansible是基于模块工作,本身没有批量部署能力。真正具有批量部署是ansible所运行模块,ansible只是提供一种框架。...command模块、自定义模块; 4、借助于插件完成记录日志邮件等功能; 5、playbook:剧本执行多个任务时,必需可以让节点一次性运行多个任务。...#确认密码788788 Your identification has been saved in /root/.ssh/id_rsa.

    1.1K10

    密码管理和2FA管理软件

    常见验证方法如下: 硬件令牌 企业可以以密钥卡形式员工提供硬件令牌,该密钥卡每隔几秒到一分钟时间生成一次代码。这是最早双因素身份验证形式之一。 推送通知 推送双因素身份验证方法不需要密码。...SMS 验证 SMS(也称为短信)可用作一种双因素身份验证形式,具体方式是将短信发送到受信任电话号码。系统会提示用户与短信交互或使用一次性代码来验证其在站点或应用上身份。...TOTP TOTP(Time-Based One-Time Password)算法是基于时间一次性密码算法,根据预共享密钥与当前时间计算一次性密码。...用户通过扫描服务提供商显示二维码将应用程序与帐户配对;然后,应用程序会为每个帐户持续生成基于时间一次性密码 OTP (TOTP) 或其他软件令牌,通常每 30-60 秒生成一次。...除了发送OTP到您设备,Authy还使用软令牌或基于时间一次性密码(TOTP),即使在您设备没有连接到数据网络时也可以生成。

    1.1K01

    一种跳板机实现思路

    session这个模块用来定义用户登录前,及用户退出后所要进行操作,:登录连接信息、用户数据打开与关闭、挂载文件系统等。password使用用户信息来更新,:修改用户密码。...图中jmp-rdp仅作为Windows服务器rdp代理服务,并提供基于web远程桌面能力。...图中jmp-socket则提供基于webLinux服务器操作终端,从而让用户不使用ssh客户端也能够方便地登录服务器。...四、核心设计思路4.1 登录跳板机用户使用ssh客户端登录到jmp-ssh服务,与jmp-ssh服务交互。jmp-ssh服务获得ssh会话建立过程中账号、加密后密码、二次认证信息。...由于通过该思路所实现跳板机直接将用户名作为目标服务器ssh会话登录名,所以在系统内部所记录日志里也是直接用户名,而不是jumpserver等方案统一账号,这种方式下,更容易定位到操作轨迹真实执行人

    1.4K40

    如何在Ubuntu 18.04上配置多重身份验证

    除了输入用户名和密码组合之外,2FA还要求用户输入一条额外信息,例如一次性密码 (OTP),六位数验证码。...第一个问题将询问您是否希望令牌基于时间基于时间身份验证令牌将在一段时间后过期,在大多数系统上默认为30秒。 基于时间令牌比不基于时间令牌更安全,并且大多数2FA实现使用它们。...首先,注销并返回到您Ubuntu环境: ssh sammy@your_server_ip 如果您使用基于密码身份验证,系统将提示您输入用户密码: OutputPassword: 注意:如果您在DigitalOcean...当您第一次配置2FA时,您有几个选项可确保您可以从锁定中恢复: 将您秘密配置代码备份副本保存在安全地方。 您可以手动执行此操作,但某些身份验证应用程序(Authy)提供备份代码功能。...以root用户身份登录后,您可以再次配置2FA并获取全新密钥。 无论选择哪种方式,您都可以使用root用户从本地环境中2FA锁定中恢复。

    2.7K30

    应用开发中网络安全

    问题断断续续花了不少时间才定位出来,期间应我要求,朋友又给了我其它两台服务器用户名和密码。在这个过程中,这个朋友在网络安全意识上淡薄,可能也是很多web/mobile app开发者共通问题。...在上面的例子里,朋友犯下了好几个常见错误: 服务器直接通过公有IP暴露在互联网上。 管理端口(ssh port)没有对源IP做任何限制。 使用用户名+密码方式而非用户名+密钥方式登入。...打造安全 ssh 服务 ssh 主要用在三种场合: 服务器诊断 服务器配置和软件安装 其他基于命令行服务器管理任务 如今通过 logstash / reimann 等日志服务工具,各个服务器上日志和事件都可以被集中到中心节点...尽管90%场合下,服务器诊断和服务器配置安装都可以通过工具完成,但还有少量一次性任务不得不依赖 ssh。...除此之外,可以做这些设置: 设置 ssh 登录方式为仅允许用户名 + private key方式,杜绝密码在网络上传输被破解可能性。 把 ssh port 换成一个知名端口。

    86440

    (数据科学学习手札132)Python+Fabric实现远程服务器连接

    ,当需要操作服务器众多,且要执行任务涉及命令繁多时,如果可以以自动化方式模拟SSH连接及执行命令繁琐过程,对工作效率提升是非常可观。   ...本文我就将带大家学习在Python中使用非常强大fabric库来对常用远程服务器连接管理操作进行自动化: 2 使用fabric玩转远程服务器管理 fabric基于强大paramiko、invoke...host参数对应密码 pkey: str型,当以私钥方式连接时,用于设置对应密钥 timeout: float型,用于设置TCP连接超时时长(单位:秒) 其他可用参数你可以前往https://docs.paramiko.org...: 2.2 配置sudo命令密码自动预填入   我们都知道,对于root用户,在执行某些权限较高命令时需要添加sudo前缀,并在会话初次执行时需要手动输入当前用户密码,而在fabric中,有两种方式可以实现这个步骤自动化...2:利用fabric.Config设置sudo密码   除了上一种方式外,我们还可以使用fabric.Config在创建连接时就一次性提前配置好sudo密码,之后需要执行sudo命令时用sudo()方法代替

    49110

    你或许真的不如大模型

    通常,.profile 用于包含那些你希望只在登录时执行一次命令,环境变量设置。 两者相似之处在于,它们都用于自定义用户 shell 环境。而不同之处在于执行时间和场合不同。...在基于Bash系统中,.profile 可以设置那些需要在所有类型shell初始化时都要生效全局环境变量,例如 PATH、USER、HOME 等。....bashrc 位置:同样是在用户家目录下,专为Bash设计配置文件(~/.bashrc)。 作用: .bashrc 则是针对交互登录Bash Shell个性化配置文件。...总结: .profile 主要负责系统登录时一次性初始化用户整个桌面环境或者命令行环境,影响范围更广。...这包括通过bash命令启动子shell、通过SSH登录并请求登录shell情况等。 作用:主要用于bash shell配置,包括定义别名、函数、设置bash选项、配置命令提示符(PS1)等。

    8610

    Python远程连接服务器用它就够了

    ,当需要操作服务器众多,且要执行任务涉及命令繁多时,如果可以以自动化方式模拟SSH连接及执行命令繁琐过程,对工作效率提升是非常可观。...本文我就将带大家学习在Python中使用非常强大fabric库来对常用远程服务器连接管理操作进行自动化: 2 使用fabric玩转远程服务器管理 fabric基于强大paramiko、invoke...,用于传入与host参数对应密码 「pkey:」 str型,当以私钥方式连接时,用于设置对应密钥 「timeout:」 float型,用于设置TCP连接超时时长(单位:秒) 「config:」 fabric.Config...: 2.2 配置sudo命令密码自动预填入 我们都知道,对于root用户,在执行某些权限较高命令时需要添加sudo前缀,并在会话初次执行时需要手动输入当前用户密码,而在fabric中,有两种方式可以实现这个步骤自动化...2:利用fabric.Config设置sudo密码 除了上一种方式外,我们还可以使用fabric.Config在创建连接时就一次性提前配置好sudo密码,之后需要执行sudo命令时用sudo()方法代替

    1.7K20

    Ansible自动化运维安装与简单使用

    它也不同于其他工具,因为它使用推送方式,而不是像 puppet 等 那样使用拉取安装agent方式。你可以将代码部署到任意数量服务器上。...文件加密工具 /usr/bin/ansible-console    基于Console界面与用户交互执行工具 Ansible 配置文件 Ansible 配置文件/etc/ansible/ansible.cfg...Ansible是基于ssh进行工作,那么当ssh一台远程主要时候,是不是需要输入密码呢?...-- 两台Linux主机需要从其中一台ssh至另外一台需要手动输入密码,通过以下设置免密码登录 生成秘钥 ssh-keygen -t rsa 会在文件夹/root/.ssh下面生产公钥和私钥 把秘钥复制至需要免密登录主机...提示使用sudo密码 -C, --check 检查,并不执行 -T, --timeout=TIMEOUT 执行命令超时时间,默认10s -u, --user=REMOTE_USER 执行远程执行用户

    65720

    一文详解 Ansible 自动化运维!

    ,同时还提供丰富 API语言接口,PHP、Python、PERL 等多种流行语言,基于 PUBLIC/PRIVATE,Ansible 以 API 调用方式运行; Ad-Hoc 命令集:Users直接通过...免交互登录 Ansible 通过 SSH 对设备进行管理,而 SSH 包含两种认证方式:一种是通过密码认证,另一种是通过密钥对验证。...,主要在以下场景使用: 固化需求; 临时一次性操作; 二次开发接口调用; 固化需求是指临时性维护,查看web服务器组磁盘使用情况、复制一个文件到其他机器等。...类似这些没有规律、临时需要做任务,我们成为固化需求,临时一次性操作,语法如下: Ansible [options] -v(—verbose):输出详细执行过程信息...用户可以在ansible-console虚拟出来终端上像shell一样使用Ansible内置各种命令,这为习惯于使用shell交互方式用户提供了良好使用体验。

    3K30

    抓包工具 | tcpdump 简明教程

    本教程将您展示如何以各种方式将流量基于 IP、端口、协议、应用程序层协议过滤出来,以确保您尽快找到所需数据包内容。...(更加quiet) -t 输出可读时间戳 -tttt 输出最大程度可读时间戳 -X 以hex和ASCII两种形式显示包内容 -XX 与**-X**类似,增加以太网header显示 -v, -vv...使用提供秘钥解密IPSEC流量 表达式 在 tcpdump 中,可以使用表达式过滤指定类型流量。...基于IP查找流量 最重要查询方式之一就是 host,我们可以用如下命令查看 IP 1.1.1.1 上进出流量: tcpdump host 1.1.1.1 06:20:25.593207 IP 172.30.0.144.39270...来自某个主机,不是发往某个端口 来自mars主机,发往 SSH 端口: tcpdump -vv src mars and not dst port 22 如你所见,我们可以组合查询所需所有数据。

    1.1K30

    Linux 下自动应答工具 Expect 使用指南

    Expect 是用于自动化交互式应用程序 1. 软件介绍 现代 Shell 对程序提供了最小限度控制(程序开始/停止/关闭等),而把交互特性留给了用户。...这意味着有些程序,你不能交互运行,比如说 passwd 命令。有一些程序可以交互运行,但在很大程度上丧失了灵活性,比如说 fsck 命令。这表明 Unix 工具构造逻辑开始出现问题。...Expect 是在 Tcl 基础上创建起来并且还提供了一些 Tcl 所没有的命令: spawn命令激活一个 Unix 程序来进行交互运行 send命令进程发送字符串 expect命令等待进程某些字符串且支持正规表达式并能同时等待多个字符串...基础知识 主要介绍常见 4 个命令使用方式 我们知道,send 命令用于发送信息到进程中,expect 命令则是根据进程反馈信息进行对应逻辑交互。..."$mypassword\r" } # 出现密码提示,发送密码 } interact # 交互模式,用户会停留在远程服务器上面 [4] 自动登录 ssh 执行命令 #!

    1.7K21
    领券