自界说构建交互式SSH应用措施,以Python为例
SSH的行使模式分两种方法交互式和非交互式的模式。在自动化体系中,更常用的长短交互式SSH,自动化器材都是基于这种模式,好比ansiable和salt-ssh,尚有文件同步器材 rsync的SSH模式。本文我们就来说说交互式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添加一下语句:
用户的shell(也许应该是/bin/sh)就可以自动运行nethack,无论设置何种command,(假如必要,都存储在情形中的SSH_ORIGINAL_COMMAND中)城市先执行。出于安详缘故起因,一样平常会配置一下限定设置:
更具体的配置选项,可以参考sshd官方手册。默认会限定封锁大大都对象,通过pty显式从头启用TTY分派,这样就可以做自界说本身的终端应用(好比Python下curses编写的应用)。我们再来看一个典范的gitlab下典范的多用户限定登岸型的authorized_keys设置实例: ![]() sshd_config设置 另一个可以用来设置启动呼吁的处所sshd设置文件:/etc/ssh/sshd_config。通过sshd_config的AuthorizedKeysCommand来设置特殊执行呼吁。它配置执行恣意措施,并从尺度输出stdout获取authorized_keys文件。好比可以设置为:
上面设置中的名目字符串的浸染是为呼吁提供实行登录的用户名(%u),用户的主目次(%h),正在行使的密钥范例(%t,譬喻ssh-rsa)和用base64编码的公钥(%k)。这里提供的密钥可用于辨认用户,可以将用户公钥存储在数据库中,通过应用查询并提供应sshd用于认证。可以在此处嵌入自界说的呼吁行应用。 Python交互式SSH实例 下面是一个一个简朴的的AuthorizedKeysCommand和python实例: ![]() 上面剧本中buildrht-shell呼吁汇报用户行使ssh builds@buildhost connect 之类的呼吁举办毗连,可以行使SSH_ORIGINAL_COMMAND变量来获取其呼吁行: ![]() 然后是身份验证,搜查其密钥和毗连: ![]() ![]() 交互式SSH中最重要的是对的输入呼吁举办及时的反馈。tail措施就是用来实现这个成果构建和打印日记给尺度输出: ![]() 以上我们就构建了一个自界说的本性化的交互式SSH应用实例。 总结 本文我们我们先容了自界说构建交互式SSH应用的要领,并通过Python为例实现了一个简朴例子。抛砖引玉,自界说的交互式SSH应用在许多环境下都可以用来作为很有效的器材,好比可不行以对github的git ssh做一个扩展,把一些成果添加到已往,而不是简朴的一个信息提醒:
【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |