0

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

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

4

2 回答 2

0

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

于 2012-07-21T21:30:17.250 回答
0

这是关于如何使用 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 文件中删除换行符。

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

于 2013-08-30T20:11:56.527 回答