你需要一个 SCP 的外壳吗?

36 login scp account-restrictions

我允许朋友在我的机器上使用本地帐户,专门用于 SCP。我可以将他的帐户的 shell 指定为/bin/true,或者以任何其他方式限制帐户,同时仍然允许 SCP?

Gil*_*il' 41

您可以将该用户的 shell 设置为rsshscponly,这是专门为此目的而设计的:

rssh 是用于 OpenSSH 的受限 shell,仅允许 scp 和/或 sftp。它现在还包括对 rdist、rsync 和 cvs 的支持。

scponly 是系统管理员的替代“外壳”(各种),他们希望为远程用户提供读取和写入本地文件的访问权限,而无需提供任何远程执行权限。

当您运行 scp 时,OpenSSH 守护进程会scp使用该-f选项启动一个进程。当您运行 sftp 时,OpenSSH 守护进程会触发一个sftp-server进程。在任何一种情况下,子进程都是通过用户的 shell 执行的,因此 shell 必须至少支持这些命令,使用类似 Bourne 的语法。任何 Bourne 风格的 shell 都可以,csh 也是如此(我认为它的引用规则对于sshd用途来说足够兼容)。Rssh 和 scponly 只允许这些命令而不是其他命令。/bin/true甚至不会运行这些命令。

  • @DannyStaple 如果用户的 shell 设置为 `/bin/false` 或其他什么都不做的程序,scp 和 sftp 都不会工作。对于这两个命令,SSH 守护进程会触发一个运行专用服务器进程(`scp -f` 或 `sftp-server`)的 shell 命令。它需要一个 Bourne 风格的 shell,或者至少是一个足够接近的近似值(例如 `rssh`,它只允许这几个命令通过)。 (3认同)