手动加入 Linux 实例 - Amazon Directory Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

手动加入 Linux 实例

除了 Amazon EC2 Windows 实例外,您还可以将特定 Amazon EC2 Linux 实例加入您的AmazonDirectory Service in Microsoft Active Directory Directory。支持以下 Linux 实例分发版和版本:

  • Amazon Linux AMI 2018.03.0

  • Amazon Linux 2(64 位 x86)

  • Red Hat Enterprise Linux 8 (HVM)(64 位 x86)

  • Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS

  • CentOS 7 x86-64

  • SUSE Linux Enterprise Server 15 SP1

注意

其他 Linux 分发版和版本可能会正常运行,但未经过测试。

将实例加入目录

在将 Amazon Linux、CentOS、红帽或 Ubuntu 实例加入您的目录之前,该实例必须按照中指定的方式启动。无缝地联接 Windows EC2 实例.

重要

以下某些过程如果未正确执行,可能会使实例无法访问或不可用。因此,我们强烈建议在执行这些过程之前对实例创建备份或拍摄快照。

将 Linux 实例加入目录

使用以下选项卡之一对特定 Linux 实例执行步骤:

Amazon Linux
  1. 使用任何 SSH 客户端连接到实例。

  2. 配置 Linux 实例以使用的 DNS 服务器 IP 地址Amazon Directory Service-提供的 DNS 服务器。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您要手动设置,请参阅如何为私有 Amazon EC2 实例分配静态 DNS 服务器?中的Amazon知识中心获取有关为特定 Linux 发行版和版本设置持久 DNS 服务器的指导。

  3. 确保您的 Amazon Linux-64 位实例为最新状态。

    sudo yum -y update
  4. 在 Linux 实例上安装所需的 Amazon Linux 程序包。

    注意

    其中一些程序包可能已安装。

    安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

    Amazon Linux 1
    sudo yum -y install sssd realmd krb5-workstation
    Amazon Linux 2
    sudo yum -y install sssd realmd krb5-workstation samba-common-tools
    注意

    有关确定您正在使用的 Amazon Linux 版本的帮助,请参阅识别 Amazon Linux 映像中的适用于 Linux 实例的 Amazon EC2 用户指南.

  5. 使用以下命令将实例加入目录。

    sudo realm join -U join_account@example.com example.com --verbose
    join_account@example.com

    中的账户example.com具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为委派目录加入权限Amazon管理 Microsoft AD

    example.com

    目录的完全限定 DNS 名称。

    ... * Successfully enrolled machine in realm
  6. 设置 SSH 服务以允许进行密码身份验证。

    1. 在文本编辑器中打开 /etc/ssh/sshd_config 文件。

      sudo vi /etc/ssh/sshd_config
    2. PasswordAuthentication 设置为 yes

      PasswordAuthentication yes
    3. 重新启动 SSH 服务。

      sudo systemctl restart sshd.service

      或者:

      sudo service sshd restart
  7. 重新启动实例之后,使用任何 SSH 客户端连接到它,然后添加Amazon通过执行以下步骤将委托管理员组到 sudoers 列表:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到sudoers文件然后保存它。

      ## Add the "Amazon Delegated Administrators" group from the example.com domain. %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

      (以上示例使用 “\<space>” 形成 Linux 空格字符。)

CentOS
  1. 使用任何 SSH 客户端连接到实例。

  2. 配置 Linux 实例以使用的 DNS 服务器 IP 地址Amazon Directory Service-提供的 DNS 服务器。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您要手动设置,请参阅如何为私有 Amazon EC2 实例分配静态 DNS 服务器?中的Amazon知识中心获取有关为特定 Linux 发行版和版本设置持久 DNS 服务器的指导。

  3. 确保您的 CentOS 7 实例保持最新状态。

    sudo yum -y update
  4. 在 Linux 实例上安装所需的 CentOS 7 程序包。

    注意

    其中一些程序包可能已安装。

    安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

    sudo yum -y install sssd realmd krb5-workstation samba-common-tools
  5. 使用以下命令将实例加入目录。

    sudo realm join -U join_account@example.com example.com --verbose
    join_account@example.com

    中的账户example.com具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为委派目录加入权限Amazon管理 Microsoft AD

    example.com

    目录的完全限定 DNS 名称。

    ... * Successfully enrolled machine in realm
  6. 设置 SSH 服务以允许进行密码身份验证。

    1. 在文本编辑器中打开 /etc/ssh/sshd_config 文件。

      sudo vi /etc/ssh/sshd_config
    2. PasswordAuthentication 设置为 yes

      PasswordAuthentication yes
    3. 重新启动 SSH 服务。

      sudo systemctl restart sshd.service

      或者:

      sudo service sshd restart
  7. 重新启动实例之后,使用任何 SSH 客户端连接到它,然后添加Amazon通过执行以下步骤将委托管理员组到 sudoers 列表:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到sudoers文件然后保存它。

      ## Add the "Amazon Delegated Administrators" group from the example.com domain. %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

      (以上示例使用 “\<space>” 形成 Linux 空格字符。)

Red Hat
  1. 使用任何 SSH 客户端连接到实例。

  2. 配置 Linux 实例以使用的 DNS 服务器 IP 地址Amazon Directory Service-提供的 DNS 服务器。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您要手动设置,请参阅如何为私有 Amazon EC2 实例分配静态 DNS 服务器?中的Amazon知识中心获取有关为特定 Linux 发行版和版本设置持久 DNS 服务器的指导。

  3. 确保 Red Hat - 64 位实例为最新状态。

    sudo yum -y update
  4. 在 Linux 实例上安装所需的 Red Hat 程序包。

    注意

    其中一些程序包可能已安装。

    安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

    sudo yum -y install sssd realmd krb5-workstation samba-common-tools
  5. 使用以下命令将实例加入目录。

    sudo realm join -v -U join_account example.com --install=/
    join_account

    这些区域有:sAMAccountName对于中的账户example.com具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为委派目录加入权限Amazon管理 Microsoft AD

    example.com

    目录的完全限定 DNS 名称。

    ... * Successfully enrolled machine in realm
  6. 设置 SSH 服务以允许进行密码身份验证。

    1. 在文本编辑器中打开 /etc/ssh/sshd_config 文件。

      sudo vi /etc/ssh/sshd_config
    2. PasswordAuthentication 设置为 yes

      PasswordAuthentication yes
    3. 重新启动 SSH 服务。

      sudo systemctl restart sshd.service

      或者:

      sudo service sshd restart
  7. 重新启动实例之后,使用任何 SSH 客户端连接到它,然后添加Amazon通过执行以下步骤将委托管理员组到 sudoers 列表:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到sudoers文件然后保存它。

      ## Add the "Amazon Delegated Administrators" group from the example.com domain. %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

      (以上示例使用 “\<space>” 形成 Linux 空格字符。)

SUSE
  1. 使用任何 SSH 客户端连接到实例。

  2. 配置 Linux 实例以使用的 DNS 服务器 IP 地址Amazon Directory Service-提供的 DNS 服务器。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您要手动设置,请参阅如何为私有 Amazon EC2 实例分配静态 DNS 服务器?中的Amazon知识中心获取有关为特定 Linux 发行版和版本设置持久 DNS 服务器的指导。

  3. 确保您的 SUSE Linux 15 实例为最新状态。

    1. 连接程序包存储库。

      sudo SUSEConnect -p PackageHub/15.1/x86_64
    2. 更新 SUSE。

      sudo zypper update -y
  4. 在 Linux 实例上安装所需的 SUSE Linux 15 程序包。

    注意

    其中一些程序包可能已安装。

    安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

    sudo zypper -n install realmd adcli sssd sssd-tools sssd-ad samba-client krb5-client
  5. 使用以下命令将实例加入目录。

    sudo realm join -U join_account example.com --verbose
    join_account

    example.com 域中具有域加入权限的 sAMAccountName。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为委派目录加入权限Amazon管理 Microsoft AD

    example.com

    目录的完全限定 DNS 名称。

    … realm: Couldn't join realm: Enabling SSSD in nsswitch.conf and PAM failed.

    请注意,应该有以下两项返回内容。

    ! Couldn't authenticate with keytab while discovering which salt to use: ! Enabling SSSD in nsswitch.conf and PAM failed.
  6. 手动启用SSSDPAM.

    sudo pam-config --add --sss
  7. 编辑 nsswitch.conf 以在 nsswitch.conf 中启用 SSSD

    sudo vi /etc/nsswitch.conf
    passwd: compat sss group: compat sss shadow: compat sss
  8. 将以下行添加到 /etc/pam.d/common-session 中,以便在初始登录期间自动创建主目录

    sudo vi /etc/pam.d/common-session
    session optional pam_mkhomedir.so skel=/etc/skel umask=077
  9. 重新引导实例以完成加入域的过程。

    sudo reboot
  10. 使用任何 SSH 客户端重新连接到实例,验证域加入是否已成功完成,然后完成其他步骤。

    1. 确认已在域中注册实例

      sudo realm list
      example.com type: kerberos realm-name: EXAMPLE.COM domain-name: example.com configured: kerberos-member server-software: active-directory client-software: sssd required-package: sssd-tools required-package: sssd required-package: adcli required-package: samba-client login-formats: %U@example.com login-policy: allow-realm-logins
    2. 验证 SSSD 守护程序的状态

      systemctl status sssd
      sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2020-04-15 16:22:32 UTC; 3min 49s ago Main PID: 479 (sssd) Tasks: 4 CGroup: /system.slice/sssd.service ├─479 /usr/sbin/sssd -i --logger=files ├─505 /usr/lib/sssd/sssd_be --domain example.com --uid 0 --gid 0 --logger=files ├─548 /usr/lib/sssd/sssd_nss --uid 0 --gid 0 --logger=files └─549 /usr/lib/sssd/sssd_pam --uid 0 --gid 0 --logger=files
  11. 允许用户通过 SSH 和控制台进行访问

    sudo realm permit join_account@example.com

    允许通过 SSH 和控制台访问域组

    sudo realm permit -g 'Amazon Delegated Administrators'

    或者允许所有用户访问

    sudo realm permit --all
  12. 设置 SSH 服务以允许进行密码身份验证。

    1. 在文本编辑器中打开 /etc/ssh/sshd_config 文件。

      sudo vi /etc/ssh/sshd_config
    2. PasswordAuthentication 设置为 yes

      PasswordAuthentication yes
    3. 重新启动 SSH 服务。

      sudo systemctl restart sshd.service

      或者:

      sudo service sshd restart
  13. 13. 重新启动实例之后,使用任何 SSH 客户端连接到它,然后添加Amazon通过执行以下步骤将委托管理员组到 sudoers 列表:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到 sudoers 文件的底部并保存该文件。

      ## Add the "Domain Admins" group from the awsad.com domain. %AWS\ Delegated\ Administrators@example.com ALL=(ALL) NOPASSWD: ALL
Ubuntu
  1. 使用任何 SSH 客户端连接到实例。

  2. 配置 Linux 实例以使用的 DNS 服务器 IP 地址Amazon Directory Service-提供的 DNS 服务器。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您要手动设置,请参阅如何为私有 Amazon EC2 实例分配静态 DNS 服务器?中的Amazon知识中心获取有关为特定 Linux 发行版和版本设置持久 DNS 服务器的指导。

  3. 确保您的 Ubuntu - 64 位实例为最新状态。

    sudo apt-get update sudo apt-get -y upgrade
  4. 在 Linux 实例上安装所需的 Ubuntu 程序包。

    注意

    其中一些程序包可能已安装。

    安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。

    sudo apt-get -y install sssd realmd krb5-user samba-common packagekit adcli
  5. 禁用反向 DNS 解析,并将默认领域设置为您的域的 FQDN。Ubuntu 实例在 DNS 中必须 可以反向解析,领域才能使用。否则,您必须在 /etc/krb5.conf 中禁用 DNS,如下所示:

    sudo vi /etc/krb5.conf
    [libdefaults] default_realm = EXAMPLE.COM rdns = false
  6. 使用以下命令将实例加入目录。

    sudo realm join -U join_account example.com --verbose
    join_account@example.com

    这些区域有:sAMAccountName对于中的账户example.com具有域加入权限的域。在出现提示时输入账户的密码。有关委托这些权限的更多信息,请参阅为委派目录加入权限Amazon管理 Microsoft AD

    example.com

    目录的完全限定 DNS 名称。

    ... * Successfully enrolled machine in realm
  7. 设置 SSH 服务以允许进行密码身份验证。

    1. 在文本编辑器中打开 /etc/ssh/sshd_config 文件。

      sudo vi /etc/ssh/sshd_config
    2. PasswordAuthentication 设置为 yes

      PasswordAuthentication yes
    3. 重新启动 SSH 服务。

      sudo systemctl restart sshd.service

      或者:

      sudo service sshd restart
  8. 重新启动实例之后,使用任何 SSH 客户端连接到它,然后添加Amazon通过执行以下步骤将委托管理员组到 sudoers 列表:

    1. 使用以下命令打开 sudoers 文件:

      sudo visudo
    2. 将以下内容添加到sudoers文件然后保存它。

      ## Add the "Amazon Delegated Administrators" group from the example.com domain. %Amazon\ Delegated\ Administrators@example.com ALL=(ALL:ALL) ALL

      (以上示例使用 “\<space>” 形成 Linux 空格字符。)

限制账户登录访问

因为所有账户都是在 Active Directory 中定义的,因此默认情况下,目录中的所有用户都可以登录该实例。可以在 sssd.conf 中使用 ad_access_filter 来仅允许特定用户登录到实例。例如:

ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)
memberOf

指示仅当用户是特定组的成员时,才允许他们访问实例。

cn

应具有访问权限的组的通用名称。在此示例中,组名称是 admins

ou

这是上面的组所在的组织单位。在此示例中,OU 是 Testou

dc

这是您的域的域组成部分。在此示例中是 example

dc

这是附加域组成部分。在此示例中是 com

您必须手动将 ad_access_filter 添加到 /etc/sssd/sssd.conf

在文本编辑器中打开 /etc/sssd/sssd.conf 文件。

sudo vi /etc/sssd/sssd.conf

执行此操作之后,sssd.conf 可能类似于下面这样:

[sssd] domains = example.com config_file_version = 2 services = nss, pam [domain/example.com] ad_domain = example.com krb5_realm = EXAMPLE.COM realmd_tags = manages-system joined-with-samba cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad ad_access_filter = (memberOf=cn=admins,ou=Testou,dc=example,dc=com)

要使配置生效,您需要重新启动 sssd 服务:

sudo systemctl restart sssd.service

或者,您也可以使用:

sudo service sssd restart

Connect 到实例

当用户使用 SSH 客户端连接到实例时,系统会提示他们输入用户名。用户可以在username@example.com要么EXAMPLE\username格式的日期和时间。响应将类似于以下内容,具体取决于您使用的 Linux 发行版:

Amazon Linux、Red Hat Enterprise Linux 和 CentOS Linux

login as: johndoe@example.com johndoe@example.com's password: Last login: Thu Jun 25 16:26:28 2015 from XX.XX.XX.XX

SUSE Linux

SUSE Linux Enterprise Server 15 SP1 x86_64 (64-bit) As "root" (sudo or sudo -i) use the: - zypper command for package management - yast command for configuration management Management and Config: https://www.suse.com/suse-in-the-cloud-basics Documentation: https://www.suse.com/documentation/sles-15/ Forum: https://forums.suse.com/forumdisplay.php?93-SUSE-Public-Cloud Have a lot of fun...

Ubuntu Linux

login as: admin@example.com admin@example.com@10.24.34.0's password: Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-1057-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sat Apr 18 22:03:35 UTC 2020 System load: 0.01 Processes: 102 Usage of /: 18.6% of 7.69GB Users logged in: 2 Memory usage: 16% IP address for eth0: 10.24.34.1 Swap usage: 0%