在Debian和Ubuntu上使用SFTP Jails限制访问

作为您的Linode的系统管理员,您可能希望让您的用户能够安全地将文件上传到您的服务器。最常见的方法是允许通过使用SSH提供加密的安全文件传输协议(SFTP)进行文件传输,这要求您为用户提供SSH登录。但是,默认情况下,SSH用户可以查看您的Linode的整个文件系统,这可能是不可取的。

本指南将帮助您配置OpenSSH以限制用户访问其主目录以及仅限SFTP访问。请注意,这些说明并非旨在支持shell登录; 根据本指南修改的任何用户帐户都可以传输文件,但无法登录远程shell会话。

这些说明适用于Ubuntu 9.04,Debian 5及更高版本。不幸的是,与Ubuntu 8.04一起打包的SSH版本太旧,无法支持此配置。

配置OpenSSH

  1. 使用您喜欢的文本编辑器编辑/etc/ssh/sshd_config文件: vim /etc/ssh/sshd_config
  2. 添加或修改Subsystem sftp行,如下所示: 的/ etc / SSH / sshd_config中1 Subsystem sftp internal-sftp
  3. 将此设置块添加到文件末尾: 的/ etc / SSH / sshd_config中1 2 3 4 5 Match Group filetransfer ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp将更改保存到您的文件。
  4. 重启OpenSSH: service ssh restart OpenSSH已成功修改。

修改用户帐户

此部分将为您的用户帐户设置正确的组,所有权和权限。

  1. 为要限制为SFTP访问权限的用户创建系统组: addgroup --system filetransfer
  2. 修改要限制为SFTP的用户帐户。为每个帐户发出以下命令,替换相应的用户名。请记住,这将阻止这些用户登录远程shell会话。 usermod -G filetransfer username chown root:root /home/username chmod 755 /home/username 这些用户现在无法在其主目录中创建文件,因为这些目录由root用户拥有。
  3. 接下来,您需要为每个用户创建新目录,他们将拥有完全访问权限。为每个用户发出以下命令,更改创建的目录以满足您的需求: cd /home/username mkdir docs public_html chown username:filetransfer * 您的用户现在应该能够通过SFTP登录他们的帐户并将文件传输到他们指定的子目录或从他们指定的子目录传输文件,但是他们应该无法看到您的Linode文件系统的其余部分。

使用SFTP

  1. sftp从终端使用: sftp username@<Your_Linodes_IP> 您可以使用该help命令查看SFTP shell中您也可以访问的命令。你有能力pwdcd并且ls,例如。还有一些命令lpwd会打印本地工作目录。在本地主目录中键入touch test.txt
  2. 将本地文件传输到远程系统: cd docs put test.txt
  3. 从远程系统将文件传输到本地系统: get test.txt
  4. 您可以通过导航到SFTP shell中的其他目录并尝试传输文件来测试文件权限。 sftp> put test.txt /tmp/ Uploading test.txt to /tmp/ remote open("/tmp/"): Failure
  5. 使用该exit命令退出会话。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

本文的版权归 Aurora47 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维

代理服务器Tengine的研究与测试

1)Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议...

2631
来自专栏java达人

项目本机部署过程中的若个问题

项目本机部署对老手来说纯粹是一个操作的过程,没有任何的技术难点,因此不会去关注,也不常去操作,有时候换一台计算机,或者在别人的计算机上开发一个新项目,部署的时候...

1915
来自专栏SeanCheney的专栏

Python的线程与进程

看过《Python分布式计算》,觉得线程和进程,最大的区别还是在于 —— 二者是如何与内存交互的。线程是共享式的内存架构,进程是分布式的内存架构,这才是问题的...

3428
来自专栏潘嘉兴的专栏

手把手教你如何优化linux服务器

服务器的优化是我们最小化安装系统后应该做的事情,下面是一些常见的基本的优化服务器的方法。关闭不需要的服务。列出需要启动的的服务crond、network、ssh...

6290
来自专栏deepcc

nodejs服务器anywhere简介

3844
来自专栏云瓣

打包优化实践(如何Code Spliting)

开发环境中可使用 analyze-webpack-plugin 观察各模块的占用情况。以该项目为例:浏览器中输入 http://localhost:3000/a...

1232
来自专栏Laoqi's Linux运维专列

Nginx+Tomcat实现Web服务器的负载均衡

5006
来自专栏性能与架构

负载均衡策略

1. HTTP重定向 当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,...

4117
来自专栏FreeBuf

Sqlmap联合Nginx实现“地毯式”检测网站SQL注入漏洞

以安全防御方的角度来看,防御的广度比深度更具优先级,这也是信息安全中木桶原理的体现。 Sqlmap是一个开源的SQL注入漏洞检测工具,Nginx是高性能的WEB...

3478
来自专栏BeJavaGod

不错位的 java .class 反编译工具推荐

我们经常会反编译看一些class文件,但是反编译出来的文件里面会有很多杂乱的东西 一直以来都是用的idea来反编译的,只要把class文件往里面一拖就行了 这么...

4825

扫码关注云+社区

领取腾讯云代金券