saltstack 之模块篇:states.ssh_auth

salt.states.ssh_auth

概述

通过 ssh_auth 状态模块来管理用户的SSH的信息授权密钥文件.如果使用 salt 配置仓库来托管公钥文件,除 user 项必须指定外,name,enc,comment 等属性不需要指定,source项指定的公钥文件需要遵循 authorized_keys 文件格式。

功能

ssh_auth 模块文件 /usr/share/pyshared/salt/states/ssh_auth.py 有两个主要函数:

  • present :验证指定的SSH key 是否 存在 于用户的authorized_keys 文件中,如果 不存在 就将其添加进去;
  • absent :验证指定的SSH key 是否 不存在 于用户的authorized_keys 文件中,如果 存在 就将其删除;

实现

salt.states.ssh_auth 通过调用 salt.modules.ssh 来实现对SSH公钥的管理。

实例

  • 配置文件: /srv/salt/ssh.sls
  • 托管的Key: /srv/salt/ssh_keys/panht.id_rsa.pub
  • 要移除的Key:
    AAAAB3NzaC1yc2EAAAADAQABAAABAQDZlhE2EQM0sw902j/rlc1+uSKgaJsvQH16e6WEMoWz4ieGkeY+DhQSw8UAhDRT6ekaHh6Na1DWNhbDeOaqC++v2ZXxy2hjLeGYQkGs0MotlBTPGG2Od3JHju20ENjxUuLMfF/U0/cqpF3p0eCnn8jKuqk2AuKAlvJQTIqbsYiUjl3z51lUzOic3wdEitvKBV5mNCMIM/uu1FqC4Zz6QpJIOF+Se3l9JI3+nNyquPVBy0VFhwfTKwN7s906YtyB0XKTdlVJKdtjhzyvINJR2W0WSH/vkxeGeuBgamjZ0k7u1jjXxz9E1zzmN/cWnBK2BDEvY6PbwTqc9C/sK4cZFjOr
panht:
  ssh_auth:
    - present
    - user: root
    - source: salt://ssh_keys/panht.id_rsa.pub
removed:
  ssh_auth: 
    - present
    - user: root
    - name: AAAAB3NzaC1yc2EAAAADAQABAAABAQDZlhE2EQM0sw902j/rlc1+uSKgaJsvQH16e6WEMoWz4ieGkeY+DhQSw8UAhDRT6ekaHh6Na1DWNhbDeOaqC++v2ZXxy2hjLeGYQkGs0MotlBTPGG2Od3JHju20ENjxUuLMfF/U0/cqpF3p0eCnn8jKuqk2AuKAlvJQTIqbsYiUjl3z51lUzOic3wdEitvKBV5mNCMIM/uu1FqC4Zz6QpJIOF+Se3l9JI3+nNyquPVBy0VFhwfTKwN7s906YtyB0XKTdlVJKdtjhzyvINJR2W0WSH/vkxeGeuBgamjZ0k7u1jjXxz9E1zzmN/cWnBK2BDEvY6PbwTqc9C/sK4cZFjOr

验证:

salt '*' state.highstate

经过验证,可以管理要添加的KEY,要移除的KEY,存在于authorized_keys中,既不属于要添加的KEY,也不属于要移除的KEY 这两个已定义列表之外的KEY ssh_auth 模块不会处理。

参考

  • salt.states.ssh_auth.absent(name, user, enc='ssh-rsa', comment='', options=None, config='.ssh/authorized_keys')
验证指定的SSH key 是否不存在

    name
        要管理的 SSH 公钥
    user
        要修改的 SSH authorized keys 文件的用户
    enc
        定义证书的类型,可以是 ecdsa, ssh-rsa 或 ssh-dss
    comment
        SSH 公钥证书的注释
    options
        可选选项,可以通过一个列表对象来传递参数,
    config
        用户主目录中 authorized_keys 的存放位置 , 默认是 ".ssh/authorized_keys"
  • salt.states.ssh_auth.present(name, user, enc='ssh-rsa', comment='', source='', options=None, config='.ssh/authorized_keys ', *kwargs)
验证指定SSH key 是否存在指定用户的 authorized_keys 文件中

    name
        要管理的 SSH 公钥 
    user
        要修改的 SSH authorized keys 文件的用户
    enc
        定义证书的类型,可以是 ecdsa, ssh-rsa 或 ssh-dss
    comment
        SSH 公钥证书的注释
    source
        公钥文件的文件,文件应该严格遵循"authorized_keys"格式,如果 comment, enc, 和 options 这些属性值被已经设置,那么就会被忽略。source项指定的公钥文件需要遵循 authorized_keys 文件格式。
    options
        可选选项,可以通过一个列表对象来传递参数,
    config
        用户主目录中 authorized_keys 的存放位置 , 默认是 ".ssh/authorized_keys"

你可能感兴趣的:(saltstack 之模块篇:states.ssh_auth)