前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Ubuntu 18.04上启用没有Shell访问权限的SFTP

如何在Ubuntu 18.04上启用没有Shell访问权限的SFTP

原创
作者头像
一步
修改于 2018-09-29 09:09:24
修改于 2018-09-29 09:09:24
4K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

SFTP代表S SH F ile T ransfer P rotocol。顾名思义,这是一种使用加密SSH连接在计算机之间传输文件的安全方法。尽管名称如此,但它与FTP(F ile T ransfer P rotocol)完全不同,尽管现代FTP客户端广泛支持它。

在启用了SSH访问的所有服务器上没有其他配置的默认情况下, SFTP是可用的。它安全且易于使用,但缺点是:在标准配置中,SSH服务器设置了对系统上具有帐户的所有用户的文件传输的访问权限和终端shell的访问权限。

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

课程准备

要学习本教程,您需要访问Ubuntu 18.04服务器。此服务器应具有具有sudo权限的非root用户以及启用的防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第1步 - 创建新用户

首先,创建一个只授予服务器文件传输访问权限的新用户。在这里,我们使用的是用户名sammyfiles,但您可以使用任何您喜欢的用户名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo adduser sammyfiles

系统将提示您为帐户创建密码,然后提供有关该用户的一些信息。用户信息是可选的,因此您可以按ENTER将这些字段留空。

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

第2步 - 创建文件传输目录

为了限制SFTP访问一个目录,我们首先要确保该目录符合SSH服务器的权限要求,这是非常特殊的。

具体来说,目录本身及文件系统树中它上面的所有目录都必须由root拥有,而其他任何人都不可写。因此,简单地限制访问用户的主目录是不可能的,因为主目录由用户拥有,而不是root

注意:某些版本的OpenSSH对目录结构和所有权没有如此严格的要求,但大多数现代Linux发行版(包括Ubuntu 18.04)都有。

有许多方法可以解决此所有权问题。在本教程中,我们将创建并将/var/sftp/uploads用作目标上载目录。/var/sftp将由root拥有,不会被其他用户写入; 子目录/var/sftp/uploads将由sammyfiles拥有,以便用户可以将文件上传到它。

首先,创建目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir -p /var/sftp/uploads

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown root:root /var/sftp

给同一目录授予root写权限,并为其他用户提供只读和执行权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chmod 755 /var/sftp

uploads目录的所有权更改为sammyfiles

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown sammyfiles:sammyfiles /var/sftp/uploads

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

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

在此步骤中,我们将修改SSH服务器配置以禁止对sammy文件的终端访问,但允许文件传输访问。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nano /etc/ssh/sshd_config

滚动到文件的最底部并附加以下配置代码段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
. . .
​
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密钥访问以提高安全性。在为用户禁用shell访问之前,请确保执行此操作。

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart sshd

您现在已配置SSH服务器以限制仅对sammyfiles访问文件传输。最后一步是测试配置以确保其按预期工作。

第4步 - 验证配置

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

使用正常的shell访问权限登录sammyfiles应该是不再可行的。我们来试试吧:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh sammyfiles@localhost

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error messageThis service allows sftp connections only.
Connection to localhost closed.

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

接下来,让我们验证用户是否可以成功访问SFTP来进行文件传输。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sftp sammyfiles@localhost

此命令将显示带有交互式提示的成功登录消息,而不是错误消息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SFTP promptConnected to localhost.
sftp>

您可以用ls在提示中列出目录内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ls

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SFTP file list outputuploads

要验证用户确实仅限于此目录并且无法访问其上方的任何目录,您可以尝试将目录更改为其上方的目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ..

此命令不会出错,但是像以前一样列出目录内容将不会显示任何更改,从而证明用户无法切换到父目录。

您现在已验证受限配置是否按预期工作。新创建的sammyfiles用户只能使用SFTP协议访问服务器进行文件传输,并且无法访问完整的shell。

结论

您已将用户限制为仅访问SFTP,无需完全shell访问即可访问服务器上的单个目录。虽然本教程仅使用一个目录和一个用户,但您可以将此示例扩展到多个用户和多个目录。

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

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Enable SFTP Without Shell Access on Ubuntu 18.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
letswave7中文教程4:脑电数据预处理-时域分析
在管理器模块数据列表中选择数据集“sp_filter ica chan_interp butt sel_chan sub093”,在菜单中点击Process->Epochsegmentation-> Segment relative to events (one file per event code)。
脑机接口社区
2020/06/30
1K0
letswave7中文教程4:脑电数据预处理-时域分析
ICA处理脑电资料汇总
1.Tools >> reject data using ICA >> reject component by map 点击这里会画出所有ICA成分的缩略图,可以有一个全局观。在这里大致观察后如果觉得哪个成分有问题,可以点击查看大图
脑机接口社区
2020/06/30
2.1K0
ICA处理脑电资料汇总
ICA独立成分分析去除EEG伪影
Hello,大家好! Rose小哥今天介绍ICA去除伪影。 关于脑电图EEG,Rose小哥分享过很多,可以查看《什么是EEG以及如何解释EEG?》《EEG数据、伪影的查看与清洗》等。今天分享的这篇利用
脑机接口社区
2020/06/30
1.6K0
letswave7中文教程2:脑电数据预处理-通道位置分配
原始的脑电图信号是有噪声的。预处理对于提高信号的信噪比以获得“清晰”的脑电图数据是非常有必要的。但是,想要完全区分噪音和信号却是几乎不可能的。在脑电信号中,信号与噪声常常混合在一起。在某些步骤中,某些伪影可以很容易地识别和删除。而有些步骤在去噪时可能会滤除部分信号。此外,一些步骤甚至会引入一些噪音。
脑机接口社区
2020/06/30
1.2K0
伪影校正时选择脑电图的独立成分的实用指南
背景:脑电图数据很容易受到非神经来源信号的污染。独立分量分析(ICA)可以帮助EEG数据对这些伪影进行校正。伪迹的独立成分(ICs)可以由专家通过目测识别。但是伪迹特性有时是模糊的或难以注意到的,甚至专家也可能不同意如何对特定伪迹进行分类。因此,将伪迹属性告知用户,并给他们机会进行干预是很重要的。
用户1279583
2022/02/28
2.6K2
伪影校正时选择脑电图的独立成分的实用指南
结合matlab代码案例解释ICA独立成分分析原理
Rose小哥今天介绍一篇来自于arnauddelorme网站上的结合matlab代码案例来解释ICA原理(案例代码在后文中有提供)。
脑机接口社区
2020/06/30
1.6K1
eeglab中文教程系列(12)-学习和删除ICA组件
本教程为脑机学习者Rose发表于公众号:脑机接口社区(微信号:Brain_Computer),QQ交流群:903290195
脑机接口社区
2019/10/28
9040
eeglab中文教程系列(12)-学习和删除ICA组件
TMS-EEG数据预处理的标准化
摘要:将非侵入性脑刺激(NIBS)技术与脑电生理活动记录相结合,在神经科学领域正日益普及。经颅磁刺激(TMS)与脑电图(EEG)的同步组合尤为成功。遗憾的是,为有效与大脑活动相互作用所需的强磁脉冲,不可避免地会在同步 EEG 采集中引入伪影。因此,需要进行细致且有效的预处理,以高效去除伪影。不幸的是,正如文献中已报道的那样,不同的预处理方法可能会导致结果出现差异。在这里,我们旨在对目前可用的三种主要 TMS-EEG 预处理流程,即 ARTIST、TESA 和 SOUND/SSP-SIR 进行特征描述,为需要在不同方法之间做出选择的研究人员提供参考。与以往的研究不同,我们使用具有已知真实情况(即无伪影且待重建的信号)的合成 TMS-EEG 信号来测试这些流程。通过这种方式,能够精确且定量地评估每个流程的可靠性,为未来的研究提供更可靠的参考。总之,我们发现所有流程的表现都不错,但在重建真实信号的时空精度方面存在差异。至关重要的是,这三种流程对试验间变异性的影响各不相同,ARTIST 会引入真实信号中原本不存在的试验间变异性。
悦影科技
2025/03/10
1100
ICA处理后,如何判断眼电、心电等成分?
当Run ICA结束后,我们一般会判断ICA分量对应的是什么分量,是眨眼成分还是水平眼动成分或是线路噪声成分。
脑机接口社区
2020/06/30
2K0
BCI-EEG脑电数据处理
EEG信号特征提取就是以脑电信号作为源信号,确定各种参数并以此为向量组成表征信号特征的特征向量。
MiChong
2020/09/24
3.6K0
BCI-EEG脑电数据处理
eeglab中文教程系列(2)-绘制脑电头皮图
本教程为脑机学习者Rose发表于公众号:脑机接口社区(微信号:Brain_Computer)
脑机接口社区
2019/10/14
2.4K0
eeglab中文教程系列(2)-绘制脑电头皮图
使用时空-频率模式分析从脑电数据的一些试验中提取N400成分
关于高小榕教授的介绍,可以查看本社区之前分享的《第1期 | 国内脑机接口领域专家教授汇总》
脑机接口社区
2020/07/28
8760
思影科技EEG/ERP数据处理业务
好的数据质量是获得可靠结果的前提,而预处理的质量往往对后处理的结果存在一定的影响。脑电的数据对噪音的敏感性很强,为了提高您数据的质量,在更大程度上将数据中的信噪比提高,获得更严谨的科研结果,我们会对您的数据进行高质量的预处理。
用户1279583
2022/04/12
1.7K0
思影科技EEG/ERP数据处理业务
思影数据处理服务六:脑磁图(MEG)数据处理
为更好的帮助到想要利用脑磁图(MEG)数据做相关研究的朋友们,拓展思影科技的业务范围,思影推出脑磁图(MEG)数据处理服务,如感兴趣请关注后留言,或联系微信:siyingyxf或拨打电话18580429226进行咨询:
用户1279583
2019/09/09
2.4K0
思影数据处理服务六:脑磁图(MEG)数据处理
letswave7中文教程1:软件安装与脑电数据导入
Letswave是一款非常好用的神经生理信号处理分析工具,支持从主流的脑电图放大器中导入数据,为数据预处理和时频域信号分析提供多种功能。而且用户友好的界面使文件管理、批处理操作、统计分析和发布的图形生成变得容易。与其他信号处理工具相比,Letswave是一种直观、流线型的脑电图数据处理可视化工具,学习曲线较浅。
脑机接口社区
2020/06/30
1.1K0
eeglab教程系列(12)-学习和删除ICA组件
研究组件属性的操作:Tools > Reject data using ICA > Reject components by map.操作过程如下:
脑机接口社区
2020/06/29
5310
脑电机器学习数据处理业务
数据质量检查包括:检查是否存在坏的导联、Marker信息是否完整、信号是否有过大的波动或漂移等。
用户1279583
2020/05/11
9410
思影数据处理业务四:EEG/ERP数据处理
3.频域/时频域分析:通过快速傅立叶变换(FFT),短时傅里叶变换(STFT),小波变换(CWT)等方式将时域信号转换成频域/时频域信号、绘制频域/时频域分布图和地形图并通过不同方式提取感兴趣时频段的振幅信息进行进一步统计分析。
用户1279583
2020/05/08
1.2K0
思影数据处理业务四:EEG/ERP数据处理
EEG伪影详解和过滤工具的汇总(二)
在《EEG伪影类型详解和过滤工具的汇总(一)》,我们详细介绍了EEG伪影类型和产生原因,这篇文章,我们主要介绍常见脑电伪影的处理技术。
脑机接口社区
2022/08/17
7691
EEG伪影详解和过滤工具的汇总(二)
NeuXus开源工具:用于实时去除EEG-fMRI中的伪迹
摘要:同时获取脑电图和功能磁共振成像(EEG-fMRI)允许以高时间和空间分辨率对大脑的电生理和血流动力学进行互补研究。其中一个具有巨大潜力的应用是基于实时分析脑电图和功能磁共振成像信号进行目标脑活动的神经反馈训练。这依赖于实时减少严重伪迹对脑电图信号的影响,主要是梯度和脉冲伪迹。已经提出了一些方法来实现这个目的,但它们要么速度慢、依赖特定硬件、未公开或是专有软件。在这里,我们介绍了一种完全开源且公开可用的工具,用于同时进行脑电图和功能磁共振成像记录中的实时脑电图伪迹去除,它速度快且适用于任何硬件。我们的工具集成在Python工具包NeuXus中。我们在三个不同数据集上对NeuXus进行了基准测试,评估了伪迹功率减少和静息状态下背景信号保留、闭眼时α波带功率反应以及运动想象事件相关去同步化的能力。我们通过报告执行时间低于250毫秒证明了NeuXus的实时能力。总之,我们提供并验证了第一个完全开源且与硬件无关的解决方案,用于实时去除同时进行的脑电图和功能磁共振成像研究中的伪迹。
悦影科技
2023/11/13
4720
相关推荐
letswave7中文教程4:脑电数据预处理-时域分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档