Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
手动将亚马逊 EC2 Linux 实例加入你的 Amazon 托管微软 AD 活动目录
除了 Amazon EC2 Windows 实例,你也可以将某些亚马逊 EC2 Linux 实例加入你的 Amazon 托管微软 AD Active Directory。 支持以下 Linux 实例发行版和版本:
-
Amazon Linux AMI 2018.03.0
-
Amazon Linux 2(64 位 x86)
-
Amazon Linux 2023 AMI
-
Red Hat Enterprise Linux 8 (HVM)(64 位 x86)
-
Ubuntu Server 18.04 LTS 和 Ubuntu Server 16.04 LTS
-
CentOS 7 x86-64
-
SUSE Linux 企业服务器 15 SP1
其他 Linux 分发版和版本可能会正常运行,但未经过测试。
将 Linux 实例加入你的 Amazon 托管微软 AD
必须先按照 无缝加入 Linux 实例 中指定的步骤启动实例,然后才能将 Amazon Linux、CentOS、Red Hat 或 Ubuntu 实例加入目录。
以下某些过程如果未正确执行,可能会使实例无法访问或不可用。因此,我们强烈建议在执行这些过程之前对实例创建备份或拍摄快照。
将 Linux 实例加入目录
使用以下选项卡之一对特定 Linux 实例执行步骤:
- Amazon Linux
-
-
使用任何 SSH 客户端连接到实例。
-
将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您想手动设置,请参阅 Amazon
知识中心中的如何将静态 DNS 服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指南。
-
确保 64 位 Amazon Linux 实例为最新状态。
sudo yum -y update
-
在 Linux 实例上安装所需的 Amazon Linux 软件包。
其中一些程序包可能已安装。
安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。
- Amazon Linux
-
sudo yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
-
使用以下命令将实例加入目录。
sudo realm join -U join_account@EXAMPLE.COM
example.com
--verbose
...
* Successfully enrolled machine in realm
-
设置 SSH 服务以允许进行密码身份验证。
-
在文本编辑器中打开 /etc/ssh/sshd_config
文件。
sudo vi /etc/ssh/sshd_config
-
将 PasswordAuthentication
设置为 yes
。
PasswordAuthentication yes
-
重新启动 SSH 服务。
sudo systemctl restart sshd.service
或者:
sudo service sshd restart
-
实例重新启动后,使用任何 SSH 客户端连接到该实例,然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中:
-
使用以下命令打开 sudoers
文件:
sudo visudo
-
将以下内容添加到 sudoers
文件的底部并保存该文件。
## Add the "Amazon Delegated Administrators" group from the example.com
domain.
%Amazon\ Delegated\ Administrators@example.com
ALL=(ALL:ALL) ALL
(以上示例使用“\<space>”形成 Linux 空格字符。)
- CentOS
-
-
使用任何 SSH 客户端连接到实例。
-
将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您想手动设置,请参阅 Amazon
知识中心中的如何将静态 DNS 服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指南。
-
确保 CentOS 7 实例为最新状态。
sudo yum -y update
-
在 Linux 实例上安装所需 CentOS 7 软件包。
其中一些程序包可能已安装。
安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。
sudo yum -y install sssd realmd krb5-workstation samba-common-tools
-
使用以下命令将实例加入目录。
sudo realm join -U join_account@example.com
example.com
--verbose
...
* Successfully enrolled machine in realm
-
设置 SSH 服务以允许进行密码身份验证。
-
在文本编辑器中打开 /etc/ssh/sshd_config
文件。
sudo vi /etc/ssh/sshd_config
-
将 PasswordAuthentication
设置为 yes
。
PasswordAuthentication yes
-
重新启动 SSH 服务。
sudo systemctl restart sshd.service
或者:
sudo service sshd restart
-
实例重新启动后,使用任何 SSH 客户端连接到该实例,然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中:
-
使用以下命令打开 sudoers
文件:
sudo visudo
-
将以下内容添加到 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
-
-
使用任何 SSH 客户端连接到实例。
-
将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您想手动设置,请参阅 Amazon
知识中心中的如何将静态 DNS 服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指南。
-
确保 Red Hat - 64 位实例为最新状态。
sudo yum -y update
-
在 Linux 实例上安装所需的 Red Hat 程序包。
其中一些程序包可能已安装。
安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。
sudo yum -y install sssd realmd krb5-workstation samba-common-tools
-
使用以下命令将实例加入目录。
sudo realm join -v -U join_account
example.com
--install=/
...
* Successfully enrolled machine in realm
-
设置 SSH 服务以允许进行密码身份验证。
-
在文本编辑器中打开 /etc/ssh/sshd_config
文件。
sudo vi /etc/ssh/sshd_config
-
将 PasswordAuthentication
设置为 yes
。
PasswordAuthentication yes
-
重新启动 SSH 服务。
sudo systemctl restart sshd.service
或者:
sudo service sshd restart
-
实例重新启动后,使用任何 SSH 客户端连接到该实例,然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中:
-
使用以下命令打开 sudoers
文件:
sudo visudo
-
将以下内容添加到 sudoers
文件的底部并保存该文件。
## Add the "Amazon Delegated Administrators" group from the example.com
domain.
%Amazon\ Delegated\ Administrators@example.com
ALL=(ALL:ALL) ALL
(以上示例使用“\<space>”形成 Linux 空格字符。)
- SUSE
-
-
使用任何 SSH 客户端连接到实例。
-
配置 Linux 实例以使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您想手动设置,请参阅 Amazon 知识中心中的如何将静态 DNS 服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指南。
-
确保您的 SUSE Linux 15 实例为最新状态。
-
连接程序包存储库。
sudo SUSEConnect -p PackageHub/15.1/x86_64
-
更新 SUSE。
sudo zypper update -y
-
在 Linux 实例上安装所需的 SUSE Linux 15 程序包。
其中一些程序包可能已安装。
安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。
sudo zypper -n install realmd adcli sssd sssd-tools sssd-ad samba-client krb5-client
-
使用以下命令将实例加入目录。
sudo realm join -U join_account example.com --verbose
…
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.
-
在 PAM 中手动启用 SSSD。
sudo pam-config --add --sss
-
编辑 nsswitch.conf 以在 nsswitch.conf 中启用 SSSD
sudo vi /etc/nsswitch.conf
passwd: compat sss
group: compat sss
shadow: compat sss
-
将以下行 to /etc/pam.d/common-session 添加到 auto 在初始登录时自动创建主目录
sudo vi /etc/pam.d/common-session
session optional pam_mkhomedir.so skel=/etc/skel umask=077
-
重新引导实例以完成加入域的过程。
sudo reboot
-
使用任意 SSH 客户端重新连接到实例,验证域加入操作是否已成功完成并完成其他步骤
-
确认已在域中注册实例
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
-
验证 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
-
允许用户通过 SSH 和控制台进行访问
sudo realm permit join_account@example.com
允许通过 SSH 和控制台访问域组
sudo realm permit -g 'Amazon Delegated Administrators'
或者允许所有用户访问
sudo realm permit --all
-
设置 SSH 服务以允许进行密码身份验证。
-
在文本编辑器中打开 /etc/ssh/sshd_config
文件。
sudo vi /etc/ssh/sshd_config
-
将 PasswordAuthentication
设置为 yes
。
PasswordAuthentication yes
-
重新启动 SSH 服务。
sudo systemctl restart sshd.service
或者:
sudo service sshd restart
-
13. 实例重新启动后,使用任何 SSH 客户端连接到该实例,然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中:
-
使用以下命令打开 sudoers 文件:
sudo visudo
-
将以下内容添加到 sudoers 文件的底部并保存该文件。
## Add the "Domain Admins" group from the awsad.com domain.
%AWS\ Delegated\ Administrators@example.com ALL=(ALL) NOPASSWD: ALL
- Ubuntu
-
-
使用任何 SSH 客户端连接到实例。
-
将 Linux 实例配置为使用 Amazon Directory Service提供的 DNS 服务器的 DNS 服务器 IP 地址。可以通过在附加到 VPC 的 DHCP 选项集中进行设置,或是通过在实例上手动设置,来执行此操作。如果您想手动设置,请参阅 Amazon
知识中心中的如何将静态 DNS 服务器分配给私有 Amazon EC2 实例,以获取有关为您的特定 Linux 发行版和版本设置永久 DNS 服务器的指南。
-
确保您的 Ubuntu - 64 位实例为最新状态。
sudo apt-get update
sudo apt-get -y upgrade
-
在 Linux 实例上安装所需的 Ubuntu 程序包。
其中一些程序包可能已安装。
安装程序包时,可能会遇到几个弹出配置屏幕。通常可以将这些屏幕中的字段保留为空白。
sudo apt-get -y install sssd realmd krb5-user samba-common packagekit adcli
-
禁用反向 DNS 解析,并将默认领域设置为您的域的 FQDN。Ubuntu 实例在 DNS 中必须 可以反向解析,领域才能使用。否则,你必须按如下方式禁用反向 DNS in /etc/krb 5.conf:
sudo vi /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
rdns = false
-
使用以下命令将实例加入目录。
sudo realm join -U join_account example.com
--verbose
...
* Successfully enrolled machine in realm
-
设置 SSH 服务以允许进行密码身份验证。
-
在文本编辑器中打开 /etc/ssh/sshd_config
文件。
sudo vi /etc/ssh/sshd_config
-
将 PasswordAuthentication
设置为 yes
。
PasswordAuthentication yes
-
重新启动 SSH 服务。
sudo systemctl restart sshd.service
或者:
sudo service sshd restart
-
实例重新启动后,使用任何 SSH 客户端连接到该实例,然后通过执行以下步骤将 Amazon 委派管理员组添加到 sudoers 列表中:
-
使用以下命令打开 sudoers
文件:
sudo visudo
-
将以下内容添加到 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
因为所有账户都是在 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
ID 映射
可以通过两种方法执行 ID 映射,以维护 UNIX/Linux 用户标识符 (UID) 和组标识符 (GID) 和 Windows 之间的统一体验 Active Directory 安全标识符 (SID) 身份。这些方法是:
集中式用户身份映射 Active Directory 需要便携式操作系统接口或 POSIX。
集中式用户身份映射
Active Directory 或其他轻型目录访问协议 (LDAP) 服务为 Linux 用户提供 UID 和 GID。In Active Directory,如果配置了 POSIX 扩展,则这些标识符将存储在用户的属性中:
UID:Linux 用户名(字符串)
UID 号:Linux 用户 ID 号(整数)
GID 号:Linux 组 ID 号(整数)
要将 Linux 实例配置为使用来自 UID 和 GID Active Directory,ldap_id_mapping = False
在 sssd.conf 文件中设置。在设置此值之前,请确认您已向中的用户和群组添加了 UID、UID 号和 GID 号 Active Directory.
分布式用户身份映射
如果 Active Directory 没有 POSIX 扩展名,或者如果你选择不集中管理身份映射,Linux 可以计算 UID 和 GID 值。Linux 使用用户的唯一安全标识符(SID)来保持一致性。
要配置分布式用户 ID 映射,请在 sssd.conf 文件中设置 ldap_id_mapping = True
。
常见问题
如果设置ldap_id_mapping = False
,有时启动 SSSD 服务会失败。此失败的原因是由于更改 UIDs 不支持。我们建议您在从 ID 映射更改为 POSIX 属性或从 POSIX 属性更改为 ID 映射时删除 SSSD 缓存。有关 ID 映射和 ldap_id_mapping 参数的更多详细信息,请参阅 Linux 命令行中的 sssd-ldap (8) 手册页。
连接到 Linux 实例
当用户使用 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%