帮酷LOGO
0 0 评论

正文
文章标签:Shell  acc  SFTP  Ubuntu  

介绍

SFTP代表Sfor ransfer Protocol ,顾名思义,这是一种使用加密SSH连接将文件传输到服务器的安全方法,

某些情况下,你可能只希望允许某些用户进行文件传输,而不允许使用SSH访问,在本教程中,我们将设置SSH守护进程,以便将SFTP访问限制为一个目录,并且每个用户均不允许SSH访问。

步骤1创建新用户

首先,创建一个新用户,该用户将只被授予对服务器的文件传输访问权限,这个,使用的是用户名sammyfiles,但是你可以使用你喜欢的用户名。


sudo adduser sammyfiles

用户信息是可选的,因此你可以按ENTER将这些字段留空。

你现在已经创建了一个新用户,该用户将被授予访问受限目录的权限,下一步我们创建文件传输的目录,并设置必要的权限。

步骤2创建文件传输目录

为了限制SFTP只能访问一个目录,我们首先必须确保目录符合服务器要求的SSH权限。

注意:某些OpenSSH版本对目录结构和所有权没有如此严格的要求,但是大多数现代的Linux分发服务器都是这样做的。

有许多方法可以解决这个所有权问题,在本教程中,我们创建,并且使用/var/sftp/uploads作为目标上传目录,/var/sftp将由root拥有,并将由其他用户不可改写; 子目录/var/sftp/uploads将由sammyfiles拥有,因此用户将能够将文件上传到它。

首先,创建目录。


sudo mkdir -p /var/sftp/uploads

/var/sftp的所有者设置为root 。


sudo chown root:root /var/sftp

向同一目录授予root写入权限,并授予其他用户仅读取和执行权限。


sudo chmod 755 /var/sftp

uploads目录中的所有权更改为sammyfiles 。


sudo chown sammyfiles:sammyfiles /var/sftp/uploads

现在目录结构已经就绪,我们可以配置SSH服务器本身了。

步骤3限制对一个目录的访问

在这个步骤中,我们修改SSH服务器配置以禁止sammyfiles终端访问,但是,允许文件传输访问。

使用nano或你喜欢的文本编辑器打开SSH服务器配置文件。


sudo nano /etc/ssh/sshd_config

滚动到文件底部,并且追加以下配置代码段:

/etc/ssh/sshd_config

. . .

Match User sammyfiles
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

然后保存并关闭文件。

Match User告诉SSH服务器只对指定的用户应用以下命令,在这里,我们指定sammyfiles
ForceCommand internal-sftp强制SSH服务器在登录时运行SFTP服务器,而不允许shell访问
PasswordAuthentication yes允许对此用户进行口令验证
ChrootDirectory /var/sftp/确保用户不允许访问除/var/sftp目录之外的内容
AllowAgentForwarding noAllowTcpForwarding no,和X11Forwarding no禁用此用户的端口转发,隧道和X11转发,

Match User开始的这组命令,也可以复制和重复到不同的用户,请确保在Match User行中修改了用户名。

注意:你可以省略PasswordAuthentication yes行,而设置SSH密钥访问以提高安全性,

在下一步中,使用密码访问本地SSH来测试配置,但是如果设置SSH密钥,则需要使用用户的密钥对访问计算机。

若要应用配置更改,请重新启动服务。


sudo systemctl restart sshd

现在你已经配置了SSH服务器来限制对sammyfiles文件传输的访问,最后一步是测试配置以确保它正常工作。

步骤4验证配置

确保新的sammyfiles用户只能传输文件。

让我们试试:


ssh sammyfiles@localhost

在返回到原始提示之前,你将看到以下消息:


Error messageThis service allows sftp connections only.
Connection to localhost closed.

这意味着sammyfiles不能再使用SSH访问服务器shell 。

接下来,验证用户是否可以成功地访问文件传输SFTP 。


sftp sammyfiles@localhost

此命令将显示一个成功的登录消息,而不是一个错误消息。


SFTP promptConnected to localhost.
sftp>

你可以在提示符中使用ls列出目录内容:


ls

这将显示在上一步中创建的uploads目录,并且返回到sftp>提示符。


SFTP file list outputuploads

要验证用户确实限制于此目录,并且无法访问它上面的目录,你可以尝试更改目录。


cd ..

你已经验证了限制配置按预期方式工作,新创建的sammyfiles用户只能使用协议访问服务器,无法访问完整的shell 。

结束语

你已将用户限制为只能通过SFTP访问服务器上的单个目录,而没有完全的shell访问权限。虽然本教程仅使用一个目录和一个用户作简洁,你可以将这个例子扩展到多个用户。

SSH服务器允许更复杂的配置方案,包括限制对组或多个用户的访问,或者限制对某些IP地址的访问。



文章标签:acc  Ubuntu  Shell  SFTP  

正文

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语