加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

自界说构建交互式SSH应用措施,以Python为例

发布时间:2019-09-11 19:40:29 所属栏目:移动互联 来源:虫虫安全
导读:SSH的行使模式分两种方法交互式和非交互式的模式。在自动化体系中,更常用的长短交互式SSH,自动化器材都是基于这种模式,好比ansiable和salt-ssh,尚有文件同步器材 rsync的SSH模式。本文我们就来说说交互式SSH应用的构建,并以Python为例实现了一个根基

自界说构建交互式SSH应用措施,以Python为例

SSH的行使模式分两种方法交互式和非交互式的模式。在自动化体系中,更常用的长短交互式SSH,自动化器材都是基于这种模式,好比ansiable和salt-ssh,尚有文件同步器材 rsync的SSH模式。本文我们就来说说交互式SSH应用的构建,并以Python为例实现了一个根基的交互式应用。

自界说构建交互式SSH应用措施,以Python为例

自界说shell

在处事器上,可以行使OpenSSH完成三个步调来得到shell:身份验证,shell会话和呼吁。我们可以随意设置shell(通过/etc/passwd)。譬喻,假如将用户的登录shell配置为/usr/bin/cshell,登岸后,就会运行cshell(可觉得自界说的交互式措施)。shell界说也很是简朴,只需以root权限编辑/etc/passwd修改最后一个字段为自界说的shell措施既可。假如用户通过度派的TTY(默认环境下已完成)毗连随处事器,那就将可以或许运行自界说的应用措施或交互式应用措施。

authorized_keys设置

必要留意的是,假如行使自界说的shell应用措施,无法接管用户转达的特殊呼吁行参数,譬喻ssh user@host ls -a执行时会丢掉最后的-a参数。为了办理这个题目,必要通过包围运行的呼吁方法,为了实现包围运行呼吁的操纵,我们可以行使用户证书验证文件authorized_keys文件。在该文件每行之前,可以添加合用于行使该密钥登录的用户的选项。这些选项中有一个选项是"command"选项。好比给将/home/user/.ssh/authorized_keys添加一下语句:

  1. command ="/usr/bin/Ccommand" ssh-rsa ... user 

用户的shell(也许应该是/bin/sh)就可以自动运行nethack,无论设置何种command,(假如必要,都存储在情形中的SSH_ORIGINAL_COMMAND中)城市先执行。出于安详缘故起因,一样平常会配置一下限定设置:

  1. restrict,pty,command ="…" ssh-rsa ... user 

更具体的配置选项,可以参考sshd官方手册。默认会限定封锁大大都对象,通过pty显式从头启用TTY分派,这样就可以做自界说本身的终端应用(好比Python下curses编写的应用)。我们再来看一个典范的gitlab下典范的多用户限定登岸型的authorized_keys设置实例:

自界说构建交互式SSH应用措施,以Python为例

sshd_config设置

另一个可以用来设置启动呼吁的处所sshd设置文件:/etc/ssh/sshd_config。通过sshd_config的AuthorizedKeysCommand来设置特殊执行呼吁。它配置执行恣意措施,并从尺度输出stdout获取authorized_keys文件。好比可以设置为:

  1. AuthorizedKeysCommand /usr/bin/Ccommand "%u" "%h" "%t" "%k" 
  2. AuthorizedKeysUser root 

上面设置中的名目字符串的浸染是为呼吁提供实行登录的用户名(%u),用户的主目次(%h),正在行使的密钥范例(%t,譬喻ssh-rsa)和用base64编码的公钥(%k)。这里提供的密钥可用于辨认用户,可以将用户公钥存储在数据库中,通过应用查询并提供应sshd用于认证。可以在此处嵌入自界说的呼吁行应用。

Python交互式SSH实例

下面是一个一个简朴的的AuthorizedKeysCommand和python实例:

自界说构建交互式SSH应用措施,以Python为例

上面剧本中buildrht-shell呼吁汇报用户行使ssh builds@buildhost connect 之类的呼吁举办毗连,可以行使SSH_ORIGINAL_COMMAND变量来获取其呼吁行:

自界说构建交互式SSH应用措施,以Python为例

然后是身份验证,搜查其密钥和毗连:

自界说构建交互式SSH应用措施,以Python为例
自界说构建交互式SSH应用措施,以Python为例

交互式SSH中最重要的是对的输入呼吁举办及时的反馈。tail措施就是用来实现这个成果构建和打印日记给尺度输出:

自界说构建交互式SSH应用措施,以Python为例

以上我们就构建了一个自界说的本性化的交互式SSH应用实例。

总结

本文我们我们先容了自界说构建交互式SSH应用的要领,并通过Python为例实现了一个简朴例子。抛砖引玉,自界说的交互式SSH应用在许多环境下都可以用来作为很有效的器材,好比可不行以对github的git ssh做一个扩展,把一些成果添加到已往,而不是简朴的一个信息提醒:

  1. Hi bollwarm! You've successfully authenticated, but GitHub does not provide shell access 

【编辑保举】

  1. 用Cython加快Python代码,速率溜到飞起
  2. 行使 Python 函数举办模块化
  3. PYPL 9 月编程说话排行榜宣布,Python 一枝独秀
  4. 细说Python的Lambda函数用法,提议保藏
  5. Python开拓必备:怎样成立一个优越的项目工程情形
【责任编辑:华轩 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读