Linux 下sftp配置之密钥方式登录详解

发布时间 - 2026-01-10 22:09:20    点击率:

Linux下sftp配置之密钥方式登录

由于vsftp采用明文传输,用户名密码可通过抓包得到,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器。由于sftp使用的是ssh协议,需保证用户只能使用sftp,不能ssh到机器进行操作,且使用密钥登陆、不是22端口。

1. 创建sftp服务用户组,创建sftp服务根目录

groupadd sftp

#此目录及上级目录的所有者必须为root,权限不高于755,此目录的组最好设定为sftp

mkdir /data/sftp
chown -R root:sftp /data/sftp
chmod -R 0755 /data/sftp

2. 修改sshd配置文件

cp /etc/ssh/sshd_config,_bk} #备份配置文件
sed -i 's@#Port 22@Port 22@' /etc/ssh/sshd_config #保证原来22端口可以
vi /etc/ssh/sshd_config

注释掉/etc/ssh/sshd_config文件中的此行代码:

Subsystem   sftp  /usr/libexec/openssh/sftp-server

添加如下代码:

Port 2222
Subsystem sftp internal-sftp -l INFO -f AUTH
Match Group sftp
ChrootDirectory /data/sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -f AUTH

凡是在用户组sftp里的用户,都可以使用sftp服务;使用sftp服务连接上之后,可访问目录为/data/sftp/username

举个例子:

test是一个sftp组的用户,它通过sftp连接服务器上之后,只能看到/data/sftp/test目录下的内容

test2也是一个sftp组的用户,它通过sftp连接服务器之后,只能看到/data/sftp/test2目录下的内容

3. 创建sftp用户

#此例将创建一个名称为test的sftp帐号

#创建test sftp家目录:test目录的所有者必须是root,组最好设定为sftp,权限不高于755

mkdir /data/sftp/test
chmod 0755 /data/sftp/test
chown root:sftp /data/sftp/test
useradd -g sftp -s /sbin/nologin test #添加用户,参数-s /sbin/nologin禁止用户通过命令行登录

创建test用户密钥对:

# mkdir /home/test/.ssh
# ssh-keygen -t rsa
# cp /root/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys
# chown -R test.sftp /home/test

在test目录下创建一个可以写的upload目录

mkdir /data/sftp/test/upload
chown -R test:sftp /data/sftp/test/upload

注:sftp服务的根目录的所有者必须是root,权限不能超过755(上级目录也必须遵循此规则),sftp的用户目录所有者也必须是root,且最高权限不能超过755。

4. 测试sftp

service sshd restart

test用户密钥登陆如下图:

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Linux  # 下sftp配置之密钥方式登录  # sftp配置密钥  # sftp配置  # Linux如何通过代理连接sftp  # Linux中sftp常用命令整理  # Linux下搭建SFTP服务器的命令详解  # Linux下sftp登录失败的解决方案  # 目录下  # 不能超过  # 创建一个  # 配置文件  # 的是  # 是一个  # 是在  # 帐号  # 希望能  # 可以使用  # 谢谢大家  # 可通过  # 命令行  # 者也  # 如下图  # 举个例子  # 器上  # 此例  # strong  # usr 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  JavaScript如何实现路由_前端路由原理是什么  如何在橙子建站中快速调整背景颜色?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  进行网站优化必须要坚持的四大原则  Android Socket接口实现即时通讯实例代码  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在阿里云完成域名注册与建站?  香港服务器WordPress建站指南:SEO优化与高效部署策略  iOS验证手机号的正则表达式  如何基于PHP生成高效IDC网络公司建站源码?  如何在腾讯云免费申请建站?  高端建站如何打造兼具美学与转化的品牌官网?  如何快速搭建高效简练网站?  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  免费网站制作appp,免费制作app哪个平台好?  ,交易猫的商品怎么发布到网站上去?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何在阿里云虚拟主机上快速搭建个人网站?  如何为不同团队 ID 动态生成多个“认领值班”按钮  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  bootstrap日历插件datetimepicker使用方法  JavaScript模板引擎Template.js使用详解  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  如何在阿里云域名上完成建站全流程?  JavaScript如何实现错误处理_try...catch如何捕获异常?  深圳网站制作培训,深圳哪些招聘网站比较好?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  js实现获取鼠标当前的位置  魔毅自助建站系统:模板定制与SEO优化一键生成指南  BootStrap整体框架之基础布局组件  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  java获取注册ip实例  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  什么是javascript作用域_全局和局部作用域有什么区别?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Android中AutoCompleteTextView自动提示  如何快速生成橙子建站落地页链接?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Laravel如何使用Telescope进行调试?(安装和使用教程)