PowerScale OneFS:配置 SFTP 和设置 chroot
Summary: 本文档介绍如何允许通过安全文件传输协议 (SFTP) 访问 PowerScale 群集。
Instructions
本文档介绍如何允许通过 SFTP 访问 PowerScale 群集。开始此过程时,需要牢记一些限制和注意事项。
- 需要 SFTP 访问权限的用户/组必须具有
ISI_PRIV_LOGIN_SSH与其用户关联的权限。 - SSH 和 SFTP 访问仅在“系统”区域内工作。
- 并非所有 ssh 配置选项都可用;PowerScale 通过 PowerScale 支持 Match 和 Subsystem 语句
isi ssh modify命令集。
除了这些因素之外,PowerScale 可以像任何其他 FreeBSD OpenSSH 服务器一样运行。使用以下命令检查群集上的 OpenSSH 版本 ssh -V。
有关设置角色和权限的指导,请在“管理角色和权限”部分下查阅适用于您的版本的 CLI 或 Web 管理指南。
检查用户/组是否具有 ISI_PRIV_LOGIN_SSH
验证相关用户是否具有 ISI_PRIV_LOGIN_SSH。下面是默认管理员用户的示例。
p930-1# isi auth mapping token admin | grep "LOGIN_SSH"
ISI_PRIV_LOGIN_SSH
如果没有输出,则必须为用户分配包含该权限的角色。有关如何执行此作的更多详细信息,请参阅您的相关版本的管理指南中的“管理角色和权限”下
本地用户的基本 SFTP 访问权限
验证正确的权限后,用户应根据其用户映射令牌拥有对文件系统部分的 SFTP 访问权限。
p930-1# sftp admin@localhost
(admin@localhost) Password:
Connected to localhost.
sftp> dir
sftp> cd ..
sftp> dir
admin ftp
基本 Chroot SFTP 访问权限
要将用户限制为文件系统的特定子集,请使用 OpenSSH 的 ChrootDirectory Match 语句中的功能。这会导致客户端将其登录路径视为 / 并使其无法离开文件系统的子集。 ChrootDirectory 但是,对 的整个路径有严格的目录权限要求 ChrootDirectory 路径中的每个目录都具有 Posix 权限 root:wheel drwxr-xr-x 有关此内容的更多详细信息,请参阅 OpenSSH maintainers 手册页。
下面是一个常见的 Match 语句,用于实现 ChrootDirectory 匹配组时。以下项需要前三行: ChrootDirectory 没有支持文件。最后一行限制用户利用 OpenSSH 中的 X11Forwarding 功能的能力。
Match Group admin
ChrootDirectory /ifs/sftp
ForceCommand internal-sftp
X11Forwarding no
下面是一个为 chroot 准备路径的基本示例,当任何匹配的用户可以写入 /ifs/sftp/home 目录下看到一个新的 res 目录。 root:wheel 拥有目录 /ifs 和 /ifs/sftp,权限设置为 755 ChrootDirectory 而 /ifs/sftp/home 权限为 777,允许用户写入访问。
p930-1# isi auth settings acls modify --calcmode-group=group_only --calcmode-owner=owner_only
p930-1# mkdir -p /ifs/sftp/home
p930-1# chmod 755 /ifs/
p930-1# chmod 755 /ifs/sftp
p930-1# chmod 777 /ifs/sftp/home
p930-1# isi ssh settings modify --match="Match Group admin
dquote> ChrootDirectory /ifs/sftp
dquote> ForceCommand internal-sftp"
p930-1# sftp admin@localhost
(admin@localhost) Password:
Connected to localhost.
sftp> ls
home
sftp> pwd
Remote working directory: /
配置多个匹配字符串
管理文件中的多个匹配项,然后将它们传递给我们的 isi ssh 命令从阵列检索较旧的数据。使用此过程可确保 sshd 验证文件,并仅在更改有效时应用更改。
以下是成功和失败的示例。
p930-1# cat /ifs/sshMatches
Match Group admin
ChrootDirectory /ifs/sftp
ForceCommand internal-sftp
X11Forwarding no
Match All
X11Forwarding no
p930-1# sshd -t -f /ifs/sshMatches && isi ssh settings modify --match="$(cat /ifs/sshMatches)"
p930-1# sshd -t -f /ifs/sshMatchBad && isi ssh settings modify --match="$(cat /ifs/sshMatchBad)"
Missing Match criteria for Allk
/ifs/sshMatchBad line 6: Bad Match condition
匹配字符串注意事项。
设置匹配字符串时,群集知道的任何用户或组标识符均可在“匹配用户”或“匹配组”字符串中使用。因此,可以通过RFC2307通过以下方式引用 Active Directory 组 domain\user。
如果用户未路由到匹配用户字符串中的正确路径或设置,请使用以下命令验证是否可以在群集上查找该用户: isi auth mapping token <username> 从 Match String 中获取用户名。
如果用户未路由到匹配组字符串中的正确路径或设置,请使用以下命令验证用户是否为相关组的成员 isi auth mapping token <username> | grep <groupname>。
提供用户名,并从匹配字符串中获取组名称。
下面是一个示例,该用户由于 Match Group 语句中的错误而无法正确路由到路径。用户 stateroot 在用户未正常工作时 prodroot 是,更正 Match Group 语句中使用的组名称中的错误来解决这个问题。
p930-1# isi auth mapping token stageroot | grep "LOGIN_SSH"
ISI_PRIV_LOGIN_SSH
p930-1# isi auth mapping token prodroot | grep "LOGIN_SSH"
ISI_PRIV_LOGIN_SSH
p930-1# cat /ifs/sshMatches
Match Group Stage-Root-SFTP
ChrootDirectory /ifs/home/Stage-Root
X11Forwarding no
ForceCommand internal-sftp
Match Group Prod-Root
ChrootDirectory /ifs/home/Prod-Root
X11Forwarding no
ForceCommand internal-sftp
p930-1# isi auth mapping token stageroot | grep "Stage-Root-SFTP"
p930-1# isi auth mapping token prodroot | grep "Prod-Root"
Name: Prod-Root
p930-1# isi auth mapping token stageroot | grep "Stage-Root"
Name: Stage-Root
传统配置
在 OneFS 8.2 之前,可以实现相同的功能,但是 isi ssh 命令尚不存在。而不是使用 isi ssh settings modify --match="" 编辑文件 /etc/mcp/templates/sshd_config 使用上述步骤将使用的相同匹配字符串。将它们添加到末尾 /etc/mcp/templates/sshd_config。
提供的说明应适用于 OneFS 8.2 之前的 OneFS 版本,但在升级到支持应用程序编程接口 (API) 的 OneFS 版本后,以这种方式进行的任何配置调整都将被删除。使用 SFTP 访问权限的用户仍需要 ISI_PRIV_LOGIN_SSH 特权。