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

Linux 安全文件传输完全指南:sftp 与 scp 的深度解析引言

目录

前言:

什么是 SFTP?

SFTP 的基本特性

使用 SFTP 进行文件传输

启动 SFTP 会话

SFTP 交互式命令

基本导航命令

本地操作命令

文件传输操作

上传文件到远程系统

递归上传目录

从远程系统下载文件

非交互式 SFTP 使用

获取帮助信息

SCP:传统但存在风险的选择

什么是 SCP?

SCP 的安全隐患

红帽官方建议

安全文件传输最佳实践

1. 优先选择 SFTP

2. 使用 SSH 密钥认证

3. 限制用户权限

4. 监控文件传输活动

5. 使用防火墙限制访问

工具对比与选择建议

总结


前言:

在 Linux 系统管理中,文件传输是日常工作中不可或缺的一部分。然而,在不安全的网络中传输文件可能会带来严重的安全风险。OpenSSH 套件提供了多种安全文件传输工具,其中 sftp 和 scp 是最常用的两种。本文将深入探讨这些工具的使用方法、安全性考量以及最佳实践。


什么是 SFTP?

SFTP(SSH File Transfer Protocol)是 OpenSSH 套件的一部分,它通过 SSH 连接提供安全的文件传输功能。与传统的 FTP 不同,SFTP 将所有数据(包括身份验证信息和文件内容)进行加密传输,有效防止了中间人攻击和数据窃听。

SFTP 的基本特性

  • 加密传输:所有数据在传输前都经过加密

  • 身份验证安全:支持密码认证和密钥认证

  • 交互式操作:提供类似 shell 的交互界面

  • 功能丰富:支持文件列表、目录切换、权限修改等操作


使用 SFTP 进行文件传输

启动 SFTP 会话

要启动 SFTP 会话,使用以下命令格式:

sftp [user@]host[:/path]

参数说明:

  • user@:可选的用户名,如果省略则使用当前本地用户名

  • host:远程主机地址

  • :/path:可选的远程路径

示例

sftp remoteuser@remotehost

连接成功后,终端会显示 sftp> 提示符,表示已进入交互式 SFTP 会话。

SFTP 交互式命令

SFTP 会话支持多种命令,这些命令在远程文件系统上的操作方式与本地系统类似:

基本导航命令
  • ls:列出远程目录内容

  • cd path:切换到远程目录

  • pwd:显示远程当前工作目录

  • mkdir dirname:创建远程目录

  • rmdir dirname:删除远程目录

本地操作命令

在命令前添加 l 字符可以在本地主机上执行命令:

  • lls:列出本地目录内容

  • lcd path:切换到本地目录

  • lpwd:显示本地当前工作目录

示例

sftp> pwd
Remote working directory: /home/remoteuser
sftp> lpwd
Local working directory: /home/user

文件传输操作

上传文件到远程系统

使用 put 命令将本地文件上传到远程系统:

sftp> mkdir hostbackup
sftp> cd hostbackup
sftp> put /etc/hosts
Uploading /etc/hosts to /home/remoteuser/hostbackup/hosts
/etc/hosts    100%  227   0.2KB/s  00:00
递归上传目录

使用 -r 选项可以递归上传整个目录树:

从远程系统下载文件

使用 get 命令从远程系统下载文件:

sftp> get /etc/yum.conf
Fetching /etc/yum.conf to yum.conf
/etc/yum.conf    100%  813   0.8KB/s  00:00

非交互式 SFTP 使用

对于简单的下载操作,可以在不进入交互式会话的情况下直接执行:

sftp remoteuser@remotehost:/home/remoteuser/remotefile

注意:这种单命令行语法只能用于下载文件,不能用于上传。

获取帮助信息

在 SFTP 会话中,可以使用 help 命令查看所有可用命令:

sftp> help
Available commands:
bye                        Quit sftp
cd path                    Change remote directory to 'path'
chgrp [-h] grp path       Change group of file 'path' to 'grp'
chmod [-h] mode path      Change permissions of file 'path' to 'mode'
chown [-h] own path       Change owner of file 'path' to 'own'
...output omitted...

SCP:传统但存在风险的选择

什么是 SCP?

SCP(Secure Copy)也是 OpenSSH 套件的一部分,它使用 SSH 协议进行安全的文件传输。SCP 命令语法简单,长期以来被系统管理员广泛使用。

SCP 的安全隐患

重要警告:尽管 SCP 使用广泛,但它存在严重的安全问题:

  1. 代码注入漏洞:SCP 存在已知的代码注入问题,可能允许攻击者在远程服务器上执行任意命令

  2. 协议设计缺陷:基于历史悠久的 rcp 协议,该协议在设计时并未充分考虑安全性

  3. 兼容性限制:并非所有安全漏洞都能在保持向后兼容性的前提下得到修复

红帽官方建议

红帽公司明确建议在新的应用或脚本中不再使用 SCP 命令,而应该使用更安全的替代方案,如:

  • SFTP:功能更丰富,安全性更高

  • rsync:支持增量同步,效率更高


安全文件传输最佳实践

1. 优先选择 SFTP

对于大多数文件传输需求,SFTP 应该是首选方案:

  • 功能更全面

  • 安全性更高

  • 交互式操作更友好

2. 使用 SSH 密钥认证

相比密码认证,SSH 密钥认证更加安全:

# 生成 SSH 密钥对
ssh-keygen -t rsa -b 4096# 将公钥复制到远程主机
ssh-copy-id user@remotehost

3. 限制用户权限

为文件传输创建专用用户,并限制其权限:

  • 使用 chroot 监狱限制用户访问范围

  • 设置适当的文件权限

  • 定期审计用户活动

4. 监控文件传输活动

定期检查系统日志,监控异常的文件传输活动:

# 查看 SSH 连接日志
tail -f /var/log/secure# 检查 SFTP 会话
ps aux | grep sftp

5. 使用防火墙限制访问

通过防火墙规则限制 SFTP/SSH 端口的访问:

# 只允许特定 IP 访问 SSH 端口
iptables -A INPUT -p tcp --dport 22 -s trusted_ip -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

第一个:

  • -A INPUT:在 INPUT 链的末尾追加一条规则

  • -p tcp:匹配 TCP 协议的数据包

  • --dport 22:匹配目标端口为 22(SSH 默认端口)

  • -s trusted_ip:匹配源 IP 地址为 trusted_ip(可信 IP)

  • -j ACCEPT:对匹配的数据包执行 接受 动作

第二个:

  • -A INPUT:在 INPUT 链的末尾追加一条规则

  • -p tcp:匹配 TCP 协议的数据包

  • --dport 22:匹配目标端口为 22(SSH 默认端口)

  • -j DROP:对匹配的数据包执行 丢弃 动作

实际效果:拒绝所有其他 IP 地址的 SSH 连接请求。


工具对比与选择建议

特性SFTPSCPrsync over SSH
安全性低(存在漏洞)
功能丰富度
传输效率中等中等高(增量同步)
交互性支持不支持不支持
推荐程度★★★★★★☆☆☆☆★★★★☆

总结

在 Linux 环境下进行安全文件传输时,我们应该:

  1. 优先使用 SFTP:功能丰富、安全性高、交互友好

  2. 避免使用 SCP:存在已知安全漏洞,不建议在新项目中使用

  3. 考虑 rsync:对于需要增量同步的大规模文件传输,rsync 是更好的选择

  4. 实施安全最佳实践:使用密钥认证、限制权限、监控活动

安全文件传输不仅仅是选择正确的工具,更重要的是建立完善的安全意识和操作流程。通过合理配置和规范操作,我们可以确保文件传输过程既高效又安全。

http://www.dtcms.com/a/561193.html

相关文章:

  • Mysql基础3
  • 上海cms网站建设珠海网站建设 科速
  • 有没有可以做游戏的网站电商网课教材
  • 【自然语言处理】生成式语言模型GPT复现详细技术方案
  • Qt 打开文件列表选择文件,实现拖拽方式打开文件,拖拽加载
  • 网站搭建徐州百度网络搭建专做婚礼logo的网站
  • macOS 上获取调试版
  • 奉加微PHY6230软件三:自定义MAC和ll_set_ble_mac_addr不能屏蔽
  • 模型推理如何利用非前缀缓存
  • 网站建设方面的论文重庆网站制作工作室
  • 优化学校网站建设方案wordpress+免备案空间
  • Linux系统之----UDP、TCP详解
  • TcpConnection
  • 选对模型、搭好架构:企业如何构建高精准RAG知识库
  • 广东网站设计公司价格软件商城app下载
  • 建立网站买空间哪家好福州关键词快速排名
  • 河南省建设厅职称网站网站域名包括哪些
  • Typescript语言中通过get请求获取api.open-meteo.com网站的天气数据
  • 设计模式的介绍
  • 13.2.3.Tomcat
  • WordPress网站主题升级网站引导页的作用
  • 哪些网站建设公司好域名备案需要多久
  • [DeepOCR] OCR主模型调度 | VLLM深度集成 | 多模态融合
  • 衡阳网站优化公司网站设计用什么软件
  • “开源链动2+1模式AI智能名片S2B2C商城小程序”在拉群营销中的应用与效果
  • c语言开发网站后端共享备案网站
  • 若依 Ruoyi APP 按钮权限管理 checkPermi
  • 托管网站是什么意思深圳人社局官网
  • MAK产品调研
  • 网站定制制作公司购物网站图片的放大怎么做的