是否可以将ssh密钥限制为特定目录

时间:2012-07-21 21:23:07

标签: ssh sftp

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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

2)填充文件如下: uuencode -m myfile.tar.gz / dev / stdout> ~mr_user / sshxfer / myfile.tar.gz.uu

3)通过在目标计算机上传输文件并运行: ssh -i~ / keys / privatekey.dsa mr_user @srcmach | sed -e's / // g'| uudecode> myfile.tar.gz

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

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