user24912 Asked: 2010-04-17 13:13:17 +0800 CST2010-04-17 13:13:17 +0800 CST 2010-04-17 13:13:17 +0800 CST 通过 SSH 禁用所有命令 772 假设使用 ssh 到服务器,可以执行 FTP 并连接到其他来源,下载病毒并执行它。 是否可以强制用户只执行一些已知的命令? windows ssh copssh 3 个回答 Voted Best Answer Javier 2010-04-17T13:26:52+08:002010-04-17T13:26:52+08:00 来自man sshd_config: 强制命令 强制执行由 ForceCommand 指定的命令,忽略客户端和 ~/.ssh/rc 提供的任何命令(如果存在)。通过使用带有 -c 选项的用户登录 shell 调用该命令。这适用于 shell、命令或子系统执行。它在 Match 块中最有用。最初由客户端提供的命令在 SSH_ORIGINAL_COMMAND 环境变量中可用。指定“internal-sftp”命令将强制使用在与 ChrootDirectory 一起使用时不需要支持文件的进程内 sftp 服务器 这使您可以使用仅允许执行特定操作的 shell 包装器。一个例子是rssh。 如果您只想对特定用户进行此限制,请使用文件中的command=cmd选项known_hosts(记录在 中man sshd) Zoredache 2010-04-17T13:18:07+08:002010-04-17T13:18:07+08:00 一种方法虽然不是完美的,但会为用户主目录创建一个单独的分区,该分区是他们具有写访问权限的任何位置。只需挂载这些分区noexec。 正确设置文件系统权限通常会非常有效地限制可能造成的损害。 如果用户至少在某种程度上不受信任,那么给他们 SSH 访问权限可能是个坏主意。也许您需要为它们设置虚拟机并将每个虚拟机限制在自己的环境中。 Marie Fischer 2010-04-17T13:57:47+08:002010-04-17T13:57:47+08:00 也许为您的用户设置一个 chroot 环境会有所帮助。请参阅如何 chroot ssh 连接?
来自
man sshd_config
:这使您可以使用仅允许执行特定操作的 shell 包装器。一个例子是rssh。
如果您只想对特定用户进行此限制,请使用文件中的
command=cmd
选项known_hosts
(记录在 中man sshd
)一种方法虽然不是完美的,但会为用户主目录创建一个单独的分区,该分区是他们具有写访问权限的任何位置。只需挂载这些分区noexec。
正确设置文件系统权限通常会非常有效地限制可能造成的损害。
如果用户至少在某种程度上不受信任,那么给他们 SSH 访问权限可能是个坏主意。也许您需要为它们设置虚拟机并将每个虚拟机限制在自己的环境中。
也许为您的用户设置一个 chroot 环境会有所帮助。请参阅如何 chroot ssh 连接?