[最佳实践]配置sshd只允许sftp登录
sftp 是 Secure File Transfer Protocol 的缩写,即安全文件传送协议,可为传输文件提供一种安全的加密方法。
sftp 为 SSH 的一部分,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的 FTP 要低,如果对网络安全性要求高,可使用 SFTP 代替 FTP。
因为安全需要,有时需要配置sshd以使得只允许sftp登录,而同时不允许ssh直接登录。
以下操作步骤在CentOS 7.6实际测试通过,可放心参考使用。
■ 添加用户组sftpgroup
groupadd sftpgroup
■ 添加用户sftpuser
useradd -g sftpgroup -d /home/sftp -s /sbin/nologin sftpuser
-s 指定不允许ssh登陆
■ 修改用户密码
passwd sftpuser
■ 配置sshd_config文件
vim /etc/ssh/sshd_config
增加或修改如下配置:
Subsystem sftp internal-sftp
Match Group sftpgroup
ChrootDirectory /home/sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Match Group sftpgroup 指定以下的子行配置是匹配 sftpgroup 用户组的。Match user userA,userB 则是匹配用户
ChrootDirectory /data/sftp/%u 设定用户访问的根文件夹。%h 代表用户 home 目录,%u 代表用户名
ForceCommand internal-sftp 该行强制执行内部 sftp,并忽略任何 ~/.ssh/rc 文件中的命令
AllowTcpForwarding no 是否允许 TCP 转发,默认值为 "yes"
X11Forwarding no 是否允许进行 X11 转发,默认值是 "no"
■ 设置正确的目录权限
要实现 Chroot 功能,目录权限设置非常重要,否则无法登录,给出的错误提示也很奇怪,难以排查、修正,导致踩坑半天,浪费很多时间!
以下为最佳设置实践,务必以此为准!
chown root:sftpgroup /home/sftp
chmod 755 /home/sftp
可以看到,ChrootDirectory的目录属主必须为root,属组必须为sftpgroup,其他用户或用户组为"只读+执行"
■ 重启sshd服务
systemctl restart sshd
■ 此时可以sftp登录
[root@node1:1 /home]# sftp sftpuser@node1
sftpuser@node1's password:
Connected to node1.
sftp> ls
sftp>
sftp>
sftp> pwd
Remote working directory: /
此时可以在sftp的根目录下建立指定用户的读写目录,即可正常使用sftp了,以下操作可参考。
sftp> mkdir test
Couldn't create directory: Permission denied
sftp> exit
[root@node1:1 /home]# cd /home/sftp
[root@node1:1 /home/sftp]# mkdir upload
[root@node1:1 /home/sftp]# chown -R sftpuser:sftpgroup upload
[root@node1:1 /home/sftp]# chmod -R 700 upload
[root@node1:1 /home/sftp]# ll
总用量 0
drwx------ 2 sftpuser sftpgroup 6 12月 22 10:55 upload
[root@node1:1 /home/sftp]# sftp sftpuser@node1
sftpuser@node1's password:
Connected to node1.
sftp> pwd
Remote working directory: /
sftp> cd upload
sftp> mkdir test
sftp> ls
test
作者后注:
网上搜到好几个类似的文章,都不能直接参考使用,再次验证了网文水平的参差不齐,真是让人头疼,浪费大家的时间。所以建议大家发出来的网文,一定要保证是确实可参考使用的,否则只会让人瞧不起
[最佳实践]配置sshd只允许sftp登录的更多相关文章
- 配置sshd的免密码登录
在客户端上生成密钥: ssh-keygen -t rsa 然后上传到服务器上即可: ssh-copy-id username@remote-server -p22
- 大规模使用 Apache Kafka 的20个最佳实践
必读 | 大规模使用 Apache Kafka 的20个最佳实践 配图来源:书籍<深入理解Kafka> Apache Kafka是一款流行的分布式数据流平台,它已经广泛地被诸如New Re ...
- Kafka在大型应用中的 20 项最佳实践
原标题:Kafka如何做到1秒处理1500万条消息? Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台).Uber.Square(移动支付公 ...
- 虚拟机最佳实践:单个 VM、临时存储和已上传磁盘
大家好! 我是 Drew McDaniel,来自 Microsoft Azure虚拟机功能研发团队,我从团队成立之初就已加入. 在本博客文章中,我将分享一些最佳实践指南,帮助您充分利用您的Azure虚 ...
- 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置
本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...
- ansible安装配置及最佳实践roles
ansible是什么? ansible是一款轻量级配置管理工具,用于远程批量部署.安装.配置.类似的还有puppet.saltstack,各有所长,任君自选. 官方文档:http://docs.ans ...
- Windows Azure 安全最佳实践 - 第 5 部分:基于Claim 的标识,单点登录
基于Claim的身份标识是处理网站与 Web 服务的身份认证和访问一种简单而强大的方式,无论您是在本地工作还是面向云工作.您可以通过减少自定义实施和使用基于Claim的单一简化标识模型,创建更安全的应 ...
- Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除
最佳实践 SAML 授权仅仅在有限的时间进行校验.你需要确定运行你的应用的计算机时间与 IdP 的时间是同步的. 如果你应用中的用户和用户组是通过用户目录进行配置的,你通常希望用户来源目录和你的 Id ...
- maven 安装与配置最佳实践
配置Maven环境变量 1.新建 maven home 环境变量 变量名:M2_HOME 变量值:D:\ProgramFiles\apache-maven-3.5.4 2 ...
- atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml
atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml 1. yaml是个好的选择.. 1 2. 数据的层次结构--结构:hash,list,和block ...
随机推荐
- ASIC加速技术在ASIC加速性能优化中的新应用与挑战
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 1. 引言 随着计算机技术的发展,芯片的性能和面积都得到了极大的提升.为了进一步提高芯片的 ...
- java调用WebService(未完成)记录篇
背景: 因工作需要和一个Sap相关系统以WebService的方式进行接口联调,之前仅听过这种技术,但并没有实操过,所以将本次开发相关的踩坑进行记录 通过一个实例来认识webservice 服务端 首 ...
- 使用Kettle定时从数据库A刷新数据到数据库B
一.需求背景 由于项目场景原因,需要将A库(MySQL)中的表a.表b.表c中的数据定时T+1 增量的同步到B库(MySQL).这里说明一下,不是数据库的主从备份,就是普通的数据同步.经过技术调研,发 ...
- mybatis 部分符号需转译 及 IF如何正确判断单个数字字符
mybatis 部分符号需转译 及 IF如何正确判断单个数字字符 1.Mybatis 转译字符如下下法即可: oracle中的日期查询在mybatis中写法可以参考如下:注意提交时间的<号是用特 ...
- 统信UOS国产服务器操作系统(UOS Server 20-1060e)安装使用体验
总体来说,UOS系统的安装还是很简明的.需要注意的是后期的驱动安装和其他各方面的使用细节. 以下是具体安装过程:(感谢统信软件河北团队的大力支持.) 特别感谢统信的郭赞.喵喵喵.Zero等各位大神的帮 ...
- vue基本操作[上] 续更----让世界感知你的存在
Vue引用js文件的多种方式 1.vue-cli webpack全局引入jquery (1)首先 npm install jquery --save (--save 的意思是将模块安装到项目目录下,并 ...
- FireflySoft.LeaderElection增加基于ZooKeeper的Leader选举
FireflySoft.LeaderElection的第一个版本实现了基于Consul的Leader选举,考虑到ZooKeeper的一个常见用途也是选主,所以此类库把ZooKeeper也集成了进来.并 ...
- 王道oj/problem11(函数调用中实现指针的传递)
网址:http://oj.lgwenda.com/prblem/11 思路:函数中的j=&i,为i的地址 *j可以从地址访问,从而改变i的值 代码: #define _CRT_SECURE_N ...
- 浏览器端模块化方式es module详解
在es module出现之前还有社区推出amd和cmd的规范,这两者还有其特定的编写方式,使用起来不算很方便.es module被官方推出来就成为了浏览器端实现模块化的一个很好的方案. 想要在浏览 ...
- 【go笔记】目录操作
基本目录操作 涉及:创建目录.重命名目录.删除目录 package main import ( "fmt" "os" "time" &quo ...