当前位置: 首页 > news >正文

CentOS 7 免密密钥登陆sftp服务 —— 筑梦之路

为什么用sftp而不是ftp?

sftp是使用ssh协议安全加密的文件传输协议,ftp在很多时候都是使用的明文传输,相对来说容易被抓包,存在安全隐患。

需求说明

1. 使用sftp代替ftp来做文件存储,锁定目录,不允许用户切换到未授权的目录

2. 不允许sftp用户ssh登陆到服务器执行操作

3. sftp用户使用密钥登陆

如何实现呢?

1. 创建sftpuser用户组和根目录

# 创建一个sftpuser用户组groupadd sftpuser# 查看用户组groups  sftpuser# 此目录及上级目录的所有者必须为root,权限不高于755,此目录的组最好设定为sftpusermkdir /data/sftpuserchown -R root:sftpuser /data/sftpuserchmod -R 0755 /data/sftpuser

 2. 修改sshd_config配置

#备份配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak     #修改端口为2222
sed -i 's/#Port 22$/Port 2222/' /etc/ssh/sshd_config# 修改如下的配置,没有的就添加
vim /etc/ssh/sshd_config# 注释这行
# Subsystem sftp /usr/libexec/openssh/sftp-server
Protocol 2
# 密码认证方式
PasswordAuthentication yes
# 密钥认证方式
PubkeyAuthentication yes
RSAAuthentication yes
Subsystem sftp internal-sftp -l info -f auth
Match group sftpuser
Chrootdirectory /data/sftpuser/%u
Allowtcpforwarding no
X11Forwarding no
Forcecommand internal-sftp -l info -f auth

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

3. 使用实例

 # 举例说明

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

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

1)创建用户和目录

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

# 创建一个目录并授权
mkdir /data/sftpuser/test
chmod 0755 /data/sftpuser/test
chown root:sftpuser /data/sftpuser/test# 添加用户,参数-s /sbin/nologin禁止用户通过命令行登录
useradd -g sftpuser -s /sbin/nologin test 

2)创建密钥

# 在用户家目录下创建.ssh目录
mkdir /home/test/.ssh# root用户生成公钥 私钥 直接回车即可 
ssh-keygen -t rsa# 拷贝公钥到用户家目录下
cp /root/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys# 给目录授权
chown -R test.sftpuser /home/test

 3)在test目录下创建可以写的upload目录

# 创建目录upload
mkdir /data/sftpuser/test/upload# 给目录授权
chown -R test:sftpuser /data/sftpuser/test/upload

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

4)测试验证

# 重启sshd服务systemctl restart sshd# sftp命令行本机测试,用私钥免密登陆sftp -oPort=2222 -oIdentityFile=~/.ssh/id_rsa test@192.168.100.100# 在其他机器上使用私钥登陆,需要将私钥文件下载,权限600

 

 

http://www.lryc.cn/news/231598.html

相关文章:

  • 记一次 .NET 某券商论坛系统 卡死分析
  • DevExpress WinForms HeatMap组件,一个高度可自定义热图控件!
  • 振弦传感器表面应变计与振弦采集仪形成岩土工程监测的解决方案
  • 笔记本电脑没有声音?几招恢复声音流畅!
  • JavaScript学习_01——JavaScript简介
  • 11.10~11.15置信区间,均值、方差假设检验,正态,t,卡方,F分布,第一第二类错误
  • 【洛谷 P2440】木材加工 题解(二分查找+循环)
  • 反向传播详解BP
  • 2023.11.16-hive sql高阶函数lateral view,与行转列,列转行
  • 解决Jetson Xavier NX上Invalid CUDA ‘--device 0‘ requested等问题
  • git push 报错 The requested URL returned error: 500
  • 应用软件安全编程--17预防基于 DOM 的 XSS
  • 【FastCAE源码阅读9】鼠标框选网格、节点的实现
  • 【ArcGIS处理】行政区划与流域区划间转化
  • Session、Token、Jwt三种登录方案介绍
  • Linux操作系统使用及C高级编程-D5Linux shell命令(进程管理、用户管理)
  • 【TDSQL-PG数据库简单介绍】
  • 【文件包含】metinfo 5.0.4 文件包含漏洞复现
  • 差分信号的末端并联电容到底有什么作用?
  • pandas教程:GroupBy Mechanics 分组机制
  • 通过右键用WebStorm、Idea打开某个文件夹或者在某一文件夹下右键打开当前文件夹用上述两个应用
  • Android 10.0 framework层设置后台运行app进程最大数功能实现
  • 如何快速找到华为手机中下载的文档
  • iceoryx(冰羚)-Architecture
  • LeetCode2-两数相加
  • css 灰质彩色的边框
  • OpenCV实现手势音量控制
  • pytorch 深度学习之余弦相似度
  • Postman的常规断言/动态参数断言/全局断言
  • ruoyi若依前端请求接口超时,增加响应时长