【问题标题】:Is it possible to restirct an ssh key to specific directories是否可以将 ssh 密钥限制为特定目录
【发布时间】:2021-01-22 10:59:09
【问题描述】:

我在服务器上有一个帐户,我需要将 sftp 访问权限授予另一个人。然而,这个人只需要访问一小部分目录。是否可以在不创建另一个用户帐户的情况下将 ssh 密钥限制为该目录子集。

基本上,这些目录所在的网站位于特定用户帐户的主目录中。我宁愿不必创建一个单独的用户帐户只是为了将使用锁定到这些目录。如果可以使用理想的 ssh 密钥锁定对特定目录的访问。

【问题讨论】:

    标签: ssh sftp


    【解决方案1】:

    这是可能的,但它有点像 hack。更受欢迎、更简单的方法是仅授予该用户对某些文件和目录的权限。

    【讨论】:

    • chroot'ing 你的用户怎么样?查看此链接:techrepublic.com/blog/opensource/…
    • chroot 用户要求其下方路径中的所有目录都归 root 所有,并且不能被任何其他用户写入。由于我想限制用户的目录是需要由非 root 帐户更新的网站的一部分,因此我不能将 chroot 用于相关子目录。
    【解决方案2】:

    这是关于如何使用 ssh 而不是 sftp 实现目标的答案。这有一些机会被 OP 接受,因为它仍然使用 ssh 工具链。

    此技术使用 ssh 的一项功能,该功能允许 ssh 基于提供给主机的私钥运行命令。当主机看到该密钥时,它会运行相关的命令。对于命令,我们将使用“cat”来转储文件。

    1. ~mr_user/.ssh/authorized_keys2 中添加如下所示的行
    command="/usr/bin/cat ~/sshxfer/myfile.tar.gz.uu",no-port-forwarding ssh-dss xxxPUBLIC_KEYxxx mr_user@tgtmach
    
    1. 像这样填充文件:
    uuencode -m myfile.tar.gz /dev/stdout >~mr_user/sshxfer/myfile.tar.gz.uu
    
    1. 通过在目标计算机上并运行以下命令来传输文件:
    ssh -i ~/keys/privatekey.dsa mr_user@srcmach |sed -e's/
    //g' |uudecode >myfile.tar.gz
    

    该命令的棘手部分是 sed 命令中有一个换行符,用于从 .uu 文件中删除换行符。

    我没有找到一种方法来传递要传输的文件名,因此我必须为每个要传输的文件创建一个密钥。这对我的用例来说没问题,因为我只有两个要传输的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多