silverlogic.sshd

OpenSSH 服务器

构建状态 Ansible Galaxy

该角色用于配置 OpenSSH 守护进程。它:

  • 默认情况下,使用操作系统的常规默认配置来配置 SSH 守护进程。
  • 可以在各种类 UNIX 的发行版上工作。
  • 可以通过字典或简单变量进行配置。
  • 支持匹配设置。
  • 支持所有 sshd_config 选项,模板是程序生成的。 (请参见 meta/make_option_list
  • 在重新加载 sshd 之前测试 sshd_config。

警告 错误配置该角色可能会锁定您无法访问服务器!请在生产环境使用前测试配置及其与用户配置的相互作用。

警告 Digital Ocean 允许在 Debian 和 Ubuntu 上通过 SSH 使用带密码的 root 账号。这不是该模块默认的设置 - 它会将 PermitRootLogin without-password 设置为允许通过 SSH 密钥访问,但不允许简单密码访问。如果您需要此功能,请确保在这些主机上设置 ssh_PermitRootLogin yes

要求

经过测试的系统:

  • Ubuntu precise, trusty
  • Debian wheezy, jessie
  • FreeBSD 10.1
  • EL 6, 7 衍生发行版
  • Fedora 22, 23
  • OpenBSD 6.0

它可能在其他版本上也能正常工作,如果有适用的 vars/ 文件,欢迎提供更多直接支持。

角色变量

未配置时,该角色将提供一个与操作系统默认值匹配的 sshd_config,去掉注释,顺序不同。

  • sshd_skip_defaults

如果设置为 True,将不应用默认值。这意味着您必须通过 sshd 字典或 sshd_Key 变量拥有完整的配置默认值。默认值为 False

  • sshd_manage_service

如果设置为 False,服务/守护进程将不会被修改,即不会尝试在启动时启用、启动或重新加载该服务。默认值为 True,除非在 Docker 容器内运行(假设在构建阶段使用了 ansible)。

  • sshd_allow_reload

如果设置为 False,修改后不会重新加载 sshd。这可以帮助故障排除。如果您想应用更改的配置,则需要手动重新加载 sshd。默认与 sshd_manage_service 的值相同。

  • sshd_authorized_principals_file

授权主体文件存储的路径。仅在 sshd_authorized_principals 也被设置时使用。 可以用于设置您的 sshd_AuthorizedPrincipalsFile 配置。例如 sshd_AuthorizedPrincipalsFile: '{{ sshd_authorized_principals_file }}'

  • sshd_authorized_principals

一个字典,列出哪些主体可以登录到哪些用户。字典的每个键是用户的名称。字典的值是允许登录到该用户的主体列表。例如:

sshd_authorized_principals:
  root:
    - root-everywhere
    - bobby
    - ryan
  • sshd_trusted_user_ca_keys_file

受信任用户 CA 密钥文件存储的路径。仅在 sshd_trusted_user_ca_keys 也被设置时使用。 可以用于设置您的 sshd_TrustedUserCAKeys 配置。例如 sshd_TrustedUserCAKeys: '{{ sshd_trusted_user_ca_keys }}'

  • sshd_trusted_user_ca_keys

一个受信任的 CA 公钥列表。

  • sshd

包含配置的字典。例如:

sshd:
  Compression: delayed
  ListenAddress:
    - 0.0.0.0
  • ssh_...

可以使用简单变量而不是字典。简单值覆盖字典值。例如:

sshd_Compression: off

在所有情况下,布尔值将被正确渲染为 sshd 配置中的 yes 和 no。列表可以用于多行配置项。例如:

sshd_ListenAddress:
  - 0.0.0.0
  - '::'

渲染为:

ListenAddress 0.0.0.0
ListenAddress ::
  • sshd_match

一个匹配部分的字典列表。请参见示例剧本。

  • sshd_match_1 到 sshd_match_9

一个字典列表或一个字典,用于 Match 部分。

依赖关系

示例剧本

危险! 该示例用于展示该角色提供的配置范围,运行它可能会破坏您对服务器的 SSH 访问!

---
- hosts: all
  vars:
    sshd_skip_defaults: true
    sshd:
      Compression: true
      ListenAddress:
        - "0.0.0.0"
        - "::"
      GSSAPIAuthentication: no
      Match:
        - Condition: "Group user"
          GSSAPIAuthentication: yes
    sshd_UsePrivilegeSeparation: no
    sshd_match:
        - Condition: "Group xusers"
          X11Forwarding: yes
  roles:
    - role: willshersystems.sshd

结果为:

# Ansible 管理: ...
Compression yes
GSSAPIAuthentication no
UsePrivilegeSeparation no
Match Group user
  GSSAPIAuthentication yes
Match Group xusers
  X11Forwarding yes

模板生成

sshd_config.j2 模板由 meta 中的脚本程序生成。新选项应添加到 options_body 或 options_match 中。

要重新生成模板,请在 meta/ 目录内运行: ./make_option_list >../templates/sshd_config.j2

许可证

LGPLv3

作者

Matt Willsher matt@willsher.systems

© 2014, 2015 Willsher Systems Ltd.

安装
ansible-galaxy install silverlogic.sshd
许可证
lgpl-3.0
下载
11.1k
拥有者