如何通过SSH/SFTP访问指定文件夹?

如何通过SSH/SFTP访问指定文件夹?

我希望每个用户通过 SFTP 连接仅访问其特定的主目录。

结构示例:

admin1 access to: /var/www/vhosts/vhost1
(optional)editor1 access to: /var/www/vhosts/vhost1/public

admin2 access to: /var/www/vhosts/vhost2
(optional)editor2 access to: /var/www/vhosts/vhost2/public

etc...
...`

答案1

也许你指的是监狱,将限制特定用户的文件夹。
我会尝试恢复配置示例

1)环境准备
您需要执行一些步骤来准备 Jail 环境。我们必须尊重 SSH 施加的一些安全限制(如果您愿意,您可以禁用它们,但这确实是一个坏主意!)。

  • 监狱文件夹必须为 root 所有
  • 监狱fodler 不能被群组/其他人写入
  • .ssh/文件夹必须有模式 700
  • authorized_keys文件必须具有模式 600

假设您有一个用户,其用户名是echoes,其主目录是/home/echoes/,并且假设我们要将其限制在自己的主目录中。正如您所说,假设我们想要使用具有公钥授权机制的 SFTP 帐户。

mkdir /home/echoes/.ssh
# write echoes public-key into /home/echoes/.ssh/authorized_keys
chown root /home/echoes/  
chmod 755 /home/echoes/  
chown -R echoes:echoes /home/echoes/.ssh/  
chmod 700 /home/echoes/.ssh/  
chmod 600 /home/echoes/.ssh/authorized_keys  

2)SSH 配置
现在我们需要匹配用户并将其限制在其自己的主目录中。那么,让我们打开 SSH 服务器配置文件:

vim /etc/ssh/sshd_config  

启用internal-sftp管理 sftp 连接:

Subsystem sftp internal-sftp  

将以下行复制粘贴到sshd_config配置文件中。我们是说:当您匹配 时echoes,只需将其移动到由ChrootDirectory(本例中是其唯一的主文件夹)定义的文件夹中。

Match user echoes  
    ChrootDirectory /home/echoes/ 
    ForceCommand internal-sftp

3)允许在子文件夹内进行写入操作 如您所见,主文件夹用户现在由 root 拥有,因此echoes将无法向其中写入一些文件。因此,您可以创建一个新的子文件夹(即echoes-write),允许用户在其中写入:

mkdir /home/echoes/echoes-write/
chown echoes:echoes /home/echoes/echoes-write/
chmod ug+w /home/echoes/echoes-write/  

4)自动移动到自己的可写文件夹中

如果您需要自动:
匹配用户 -> 将其移动到 Jail -> 自动将其移动到其自己 Jail 的可写子文件夹中,请告诉我,我将尝试以配置步骤恢复该场景。
由于您没有写有关您的系统的信息,因此我做了很多假设。

相关内容