如何利用SFTP在远程服务器中保障文件传输安全

FTP,SFTP,FTPS,SSL,TSL简介,区别,联系,使用场景说明 FTP/SFTP/FTPS,SSL/TLS协议的简介,区别,联系,使用场景说明 阅读详情

提供:ZStack云计算

SFTP是什么?

FTP,全称为“文件传输协议”,是一种高人气远程系统间文件传输方法。

SFTP的全称则为SSH文件传输协议,或者安全文件传输协议,这是一套打包在SSH当中的独立协议,能够以类似的方式通过安全连接完成文件传输。其优势在于利用安全连接传输文件,同时能够遍历本地与远程系统上的文件系统。

在大多数情况下,SFTP都拥有更出色的底层安全功能与SSH连接承载能力。FTP的安全性则比较低下,意味着大家应当只在特定场景或者受信网络中使用。

尽管SFTP被集成在多种图形工具当中,但在今天的教程里,我们将介绍如何通过其交互命令行界面进行使用。

如何接入SFTP

在默认情况下,SFTP采用SSH协议来验证并建立安全连接。有鉴于此,SSH中的验证方法也都适用于SFTP。

虽然默认情况下可以轻松使用并设置密码,但这里建议大家创建SSH密钥并将公钥传输至任何需要访问的系统当中。这样做的安全性更高,且从长远角度讲能够显著节约时间。

这里建议大家参阅SSH密钥设置一文以了解如何完成上述操作。

如果大家能够利用SSH接入设备,即相当于完成了利用SFTP管理文件的全部先决条件。使用以下命令测试SSH访问:

ssh username@remote_hostname_or_IP

如果结果正常,直接退出:

exit

我们也可以使用以下命令建立一条SSH连接,而后打开SFTP会话:

sftp username@remote_hostname_or_IP

大家将接入远程系统,提示符也将变更为SFTP提示符。

获取SFTP帮助信息

首先要了解的就是帮助命令,即help,其能够帮助我们了解SFTP的各项常规操作。大家可以在提示符中直接输入:

help

?

列出的可用命令如下:

Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                               filesystem containing 'path'
exit                               Quit sftp
get [-Ppr] remote [local]          Download file
help                               Display this help text
lcd path                           Change local directory to 'path'
. . .

大家还可以在下面的章节中了解到其中部分命令的使用方式。

利用SFTP进行导航

我们可以利用多种命令功能对远程系统中的文件结构进行导航。

首先,我们找到当前远程系统上的目录。与常见的shell会话一样,我们可以使用以下命令:

pwd

Remote working directory: /home/demouser

我们可以利用另一条类似的命令查看远程系统中的当前目录内容:

ls

Summary.txt     info.html       temp.txt        testDirectory

请注意,SFTP界面中的命令并非普通shell命令,而且也非富功能型,但其同样能够实现更多重要的可选标记:

ls -la

drwxr-xr-x    5 demouser   demouser       4096 Aug 13 15:11 .
drwxr-xr-x    3 root     root         4096 Aug 13 15:02 ..
-rw-------    1 demouser   demouser          5 Aug 13 15:04 .bash_history
-rw-r--r--    1 demouser   demouser        220 Aug 13 15:02 .bash_logout
-rw-r--r--    1 demouser   demouser       3486 Aug 13 15:02 .bashrc
drwx------    2 demouser   demouser       4096 Aug 13 15:04 .cache
-rw-r--r--    1 demouser   demouser        675 Aug 13 15:02 .profile
. . .

要前往其它目录,则:

cd testDirectory

现在我们可以对远程文件系统进行遍历了,但我们如何访问自己的本地文件系统呢?我们可以通过添加l将命令指向本地文件系统。

这时所有命令都将指向当前本地工作目录:

lpwd

Local working directory: /Users/demouser

我们可以列出当前目录中的全部内容:

lls

Desktop         local.txt       test.html
Documents       analysis.rtf        zebra.html

我们也可以变更想要交互的本地系统目录:

lcd Desktop

利用SFTP传输文件

如果不能实现文件传输,那么在远程与本地文件系统间进行导航将失去实际意义。

将远程文件传输至本地系统

如果大家希望从远程主机处下载文件,则可使用以下命令:

get remoteFile

Fetching /home/demouser/remoteFile to remoteFile
/home/demouser/remoteFile                       100%   37KB  36.8KB/s   00:01

如大家所见,默认情况下get命令会将远程文件以同样的文件名下载至本地文件系统。

我们也可以复制远程文件并使用不同的文件名:

get remoteFile localFile

其中get命令还能够添加多种可选标记。例如,我们可以添加递归选项复制目录及其中的全部内容:

get -r someDirectory

我们也可以使用-P或者-p以保持合适的权限与访问次数:

get -Pr someDirectory
将本地文件传输至远程系统

将本地文件传输至远程系统可使用put命令:

put localFile

Uploading localFile to /home/demouser/localFile
localFile                                     100% 7607     7.4KB/s   00:00

同样的,put也支持get命令的各标记,因此大家也可以使用以下命令:

put -r localDirectory

请注意,当前OpenSSH版本存在一项bug,导致以上命令无法正常执行。如果使用问题版本OpenSSH执行以上命令,则会返回下列错误提示:

Couldn't canonicalise: No such file or directory.

为了解决这一问题,我们需要使用mkdir localDirectory命令在远程端创建目标目录,而后即可正常使用上述命令。

我们也可以使用df命令完成文件的下载与上传。在它的帮助一,大家可以检查自身是否拥有足够的传输存储空间:

df -h

  Size     Used    Avail   (root)    %Capacity
  19.9GB   1016MB   17.9GB   18.9GB           4%

请注意,此命令不具备本地版本,但我们可以使用!命令加以解决。

!命令会让我们前往一套本地shell,在这里我们可以在本地系统上执行任何命令。下面检查磁盘使用量:

!
df -h

Filesystem      Size   Used  Avail Capacity  Mounted on
/dev/disk0s2   595Gi   52Gi  544Gi     9%    /
devfs          181Ki  181Ki    0Bi   100%    /dev
map -hosts       0Bi    0Bi    0Bi   100%    /net
map auto_home    0Bi    0Bi    0Bi   100%    /home

任何其它本地命令都能够正常起效。要返回SFTP会话:

exit

这时SFTP提示符会再次出现。

利用SFTP实现简单文件操作

SFTP允许大家在处理文件结构时完成各类基本文件操作。

例如,我们可以在变更远程系统上的文件所有权:

chown userID file

请注意,与系统chmod命令不同,SFTP登记并不接受用户名,而是使用UID。遗憾的是,我们没办法在SFTP界面当中轻松获取对应的UID。

可行的解决办法之一如下:

get /etc/passwd
!less passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
. . .

请注意,在这里我们并未单独使用!,而是将其作为本地shell命令的前缀。这种作法适用于任何本地设备上的命令,包括之前提到的df命令。

UID位于文件的第三列,以冒号圈起。

同样的,我们也可以变更某文件的组持有权:

chgrp groupID file

再次强调,不存在简单的远程系统组罗列办法。我们可以使用以下命令实现:

get /etc/group
!less group

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
. . .

第三列即为该组的ID,正是我们要找到的内容。

现在chmod命令已经能够在远程文件系统上起效了:

chmod 777 publicFile

Changing mode on /home/demouser/publicFile

没有专门修改本地文件权限的命令,但大家可以设置local umask,这样任意文件在被复制到本地系统时都将拥有合适的权限。

这里我们需要使用lumask命令:

lumask 022

Local umask: 022

现在全部下载完成的常规文件(只要未使用-p)都将拥有644权限。

SFTP允许大家利用lmkdir与mkdir分别在本地与远程系统上创建目录。

其它文件命令则只适用于远程文件系统:

ln
rm
rmdir

这些命令与其shell版本在作用上完全一致。如果大家需要在本地文件系统上执行这些操作,请记得使用!命令首先进入shell。

或者也可直接将!作为前缀:

!chmod 644 somefile

在完成SFTP会话内的操作后,使用exit或者bye断开连接。

bye

总结

尽管SFTP是一款简单的工具,但其非常适用于管理服务器并在不同服务器间实现文件传输。

如果大家之前使用FTP或者SCP进行文件传输,那么SFTP无疑是对二者的优势进行了结合。尽管其并非适合所有环境,但它仍然是一款值得尝试的灵活工具。

本文来源自DigitalOcean Community。英文原文:How To Use SFTP to Securely Transfer Files with a Remote Server By Justin Ellingwood

翻译:diradw

如何快速对Linux远程登录SSH服务进行安全加固? SSH( Secure Shell ,安全外壳协议 )命令是openssh套件中的客户端连接工具,采用了非对称加密算法aymmetric encryption algorithm实现安全的远程登录服务器; 阅读详情

相关推荐

精通Xshell与SFTP:Linux远程管理与安全文件传输

Xshell拥有一个开放的插件系统,允许用户根据自己的需求开发和安装插件,以扩展其功能。开发者可以使用Xshell提供的插件API开发新的功能模块,比如为Xshell增加对新协议的支持或者增加特殊字符处理的能力。在Xshell的插件市场中,有许多由社区开发的插件可以免费下载和使用,例如自动补全功能的插件、图形化环境的插件等。用户也可以根据自己的特定需求,选择合适的插件来优化工作流程。

weixin_30299319的博客 888

linux修改sftp umask,配置 bash 默认的 umask 更改 SFTP 上传文件的权限

最近遇到一点事,需要开放工作室服务器的网站目录上传文件权限,要求静态网站上传可以即传即用,考虑到简单起见我想到的办法是新建一个用户加入 www-data 组,登录目录设在网站所在目录下,要传网站直接把文件丢上去就行(前提是这些网站都在同一个域名下,不然还需要另外配置 Server)。可是 SFTP 上传的文件都是默认755,原本 vsftpd 可以用户 local_umask 控制上传文件权限,但...

weixin_36056010的博客 2886

SecureFX for Mac:安全高效的SFTP文件传输工具

SecureFX for Mac是一款专为开发者与系统管理员设计的专业级SFTP客户端工具,集成了安全文件传输、远程主机访问与可视化界面操作功能。它基于SSH协议实现数据加密传输,确保在不安全网络环境中数据的完整性与机密性。本章将从SecureFX的基本功能入手,逐步引导用户完成其在Mac系统上的安装与初始配置。同时,我们还将介绍SFTP(SSH File Transfer Protocol)的基本工作原理,包括其与传统FTP的区别、SSH加密通道的建立过程,以及如何保障数据在传输过程中的安全性。

weixin_42576410的博客 1130

centos7专用sftp加固搭建

前言:sftp是生产环境中经常用到的工具,本文介绍了2种sftp登录方式,推荐使用第二种更加安全。 一、使用密码验证方式 1、创建用户组sftp groupadd sftp 2、创建用户sftp useradd -g sftp -s /sbin/nologin -M sftp #-g 加入到sftp组 #-s 禁止ssh登陆 #-M 不要自动建立用户的登陆目录(在/home下) 3、设置sftp账户密码 echo sftp |passwd --stdin sftp 4、创建账户sftp根目录tes.

萌新包大人的博客 663

基于SSH的安全文件传输服务SFTP服务器源码解析与实战部署

htmltable {th, td {th {pre {简介:该资源为一个SFTP服务器的源码压缩包,文件名为“SFTPServer_dish5qs_sftp_sftp下载_源码.rar”,封装在ZIP容器中,表明其为可编译、可定制的SFTP服务实现项目。SFTP(Secure File Transfer Protocol)基于SSH协议,提供加密文件传输,广泛应用于安全运维场景。

weixin_28787801的博客 812

Xftp:高效安全的文件传输解决方案

Xftp是一款功能强大的FTP/SFTP文件传输软件,广泛应用于需要安全、高效地在本地计算机与远程服务器之间传输数据的场景。它不仅支持传统的FTP协议,还提供了对SSH加密传输协议(SFTP)的支持,确保数据在传输过程中的安全性和私密性。Xftp的设计旨在提供给用户一个简洁直观的界面,同时提供强大的文件管理功能,让用户即使面对复杂的文件传输任务也能轻松应对。

weixin_33240461的博客 2029

SFTP chroot后如何设置umask

公司Sftp服务器设置了chroot,因为chroot对目录权限有限制,想了一个别的办法绕了过去。这几天,又有客户说,文件权限始终为644,可是要求为664。 开始以为是系统原因,改了系统/etc/bashrc,可是依然如旧,想到sftp本身有可能有umask,百度一下,资料太少,google不能用,后来找了几份文档,通过实验终天成功了,现把过程总结如下:一,开启ssh...

weixin_34348174的博客 1085

Windows环境下使用freeSSHd搭建安全SFTP服务器完整指南

在企业信息化建设与远程文件传输需求日益增长的背景下,安全、稳定、可控的文件传输服务成为IT基础设施的重要组成部分。Windows系统作为广泛使用的操作系统之一,虽原生不支持SFTP协议,但通过第三方工具如freeSSHd,可高效构建基于SSH协议的安全文件传输环境。

weixin_42443533的博客 2272

sftp/ftp文件权限问题

sftp, ftp, 文件权限

wangchao2679的博客 2840

FTP的安全装考虑和FTP的加固

关于FTP的一些安全性,主要是针对windowsFTP来的,写写自己的看法。

sftp安全文件传输

sftp 用于替代FTP传输,安全传输工具

教你如何确保服务器文件传输是安全的

文件传输协议的选择文件传输协议是在网络中实现文件传输的一种规范或标准,它定义了文件传输的方式、格式、速度和安全性等要素。常见的文件传输协议有FTP、SFTP、HTTP和HTTPS等。FTPFTP是最早出现的文件传输协议,可以在两个系统之间以明文形式传输文件。尽管FTP简单易用,但由于传输数据明文,容易被窃听或篡改,因此在现代软件中已经被大多数弃用。SFTPSFTP是嵌入在SSH(Secure Shell)中的协议,通过安全连接执行FTP命令。SFTP具有较高的安全性,因为传输的数据是加密的,难以破解或修改。

镭速的博客 1500

管理信息系统(MIS)设计

一名读者可以借阅多本图书,而一本图书也可以被不同的读者借阅,所以读者与图书之间存在着多对多的借阅关系,读者与图书之间存在着多对多的联系,即m:n的联系。每一种图书属于一种图书类型,而一种图书类型可以包含很多本图书,因此可以得到图书类型与图书之间也存在着一种一对多的联系,即图书类型与图书是1:n的联系。系统应该实现以下功能:图书管理员可以维护图书信息,包括增加新书、修改图书信息、办理图书借阅登记、图书归还登记、过期图书处理、丢失图书处理及读者借阅证件信息的维护等;

m0_69718745的博客 2478

SFTP 协议深度解析:SSH 加持的安全文件传输方案

本文深入解析SFTP协议的工作原理、核心特性及应用场景。SFTP基于SSH协议实现安全文件传输,提供端到端加密、双重身份验证、数据完整性保障等功能,支持断点续传和跨平台操作。文章详细阐述了SFTP的连接建立、会话交互、文件传输等流程,并对比分析了SFTP与FTP、FTPS等替代方案的优缺点。同时提供服务器配置指南和客户端操作示例,帮助用户快速实现安全文件传输。SFTP特别适合敏感数据传输、远程备份、自动化运维等对安全性要求较高的场景。

一位搞嵌入式和前端的genius的博客 1615

基于Python的手语识别项目(简单版)

总之,看似简单的代码,实则花费了我不少的时间和精力,我曾无数次在深夜的灯光下,与代码为伴,只为了一点点优化,一丝丝提升。让我们一起,以尊重原创的精神,推动编程领域的发展,让这份热爱和技术的力量,照亮更多人的前行之路。模型的建立(---------------本人采用的是开源的asl-alphabet手势识别库,记得放在路径下--------------)current_dir需要根据自己的路径修改!current_dir需要根据自己的路径修改!current_dir需要根据自己的路径修改!

lusen_j的博客 1967

单细胞测序数据读取实战指南:从入门到精通

本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。

weixin_29095587的博客 460

【Linux】sftp 命令安全的文件传输协议

Linux 下使用 sftp 命令实现安全文件传输 本文介绍了 Linux 系统中 sftp(Secure File Transfer Protocol)命令的使用方法。sftp 是基于 SSH 协议的安全文件传输工具,相比传统 FTP 具有加密传输、身份验证等安全优势。文章详细讲解了 sftp 的核心功能,包括交互式会话操作、文件上传下载、批量传输等实用技巧,并提供了完整的命令参考表。通过 sftp 工具,用户可以安全高效地在本地和远程服务器之间传输文件,保障数据安全的同时提升工作效率。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

爬虫君子协议-robots.txt协议

文章目录一.定义二.用法 一.定义 robots协议是一种约定俗称的爬虫协议,由网站主人规定了该网站的哪些内容可以爬取,哪些内容不可以爬取,擅自爬取可能承担相关法律责任。之所以称之为君子协议,是因为防君子不防小人,该协议并没有用技术手段实现反爬,只是一个申明。 在网站根目录后输入/robots.txt后即可查看该网站的君子协议 例如访问https://www.douban.com/robots.txt可查看豆瓣网站的君子协议 查看结果如下 User-agent: * Disallow: /subject_

Henrik-Yao的博客 7618

sftp之概述、搭建、命令

一、sftp概述 sftp(Secure File Transfer Protocol)是安全文件传输协议的缩写,是一种安全的文件传送协议,可以为传输文件提供一种安全的加密方法。是ssh内含协议,也就是说只要sshd服务器启动了,sftp就可使用,不需要额外安装,它的默认端口和SSH一样为22。 SFTP本身没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操...

catyuan的博客 5090

cst-python联合仿真的问题解决

cst与python联合仿真出现无法调用CST的问题解决

ayihu_的博客 2375

linux建立SFTP服务器

SFTP (Secure File Transfer Protocol) 是一种基于SSH (Secure Shell) 协议的安全文件传输协议。它通过加密/解密技术保障文件传输的安全性,特别适用于处理敏感数据如报表和对账单等。SFTP要求客户端必须由服务器进行身份验证,并且数据传输必须通过安全通道(SSH)进行,确保不传输明文密码或文件数据。与传统的FTP相比,SFTP提供了更高的安全性,但可能会影响传输效率。

2401_86544677的博客 4866

C#上位机+TensorFlow Lite 轻量化AI模型部署实战(工业级完整版,低算力工控机首选)

工业自动化轻量化AI部署指南:C# + TensorFlow Lite实战 摘要:本文针对工业自动化领域机器视觉部署的痛点,提出基于C#和TensorFlow Lite(TFLite)的轻量化解决方案。该方案完美适配低算力工控环境(J1900/2G内存),具有以下核心优势:1)极致轻量化,模型体积仅KB-MB级;2)CPU深度优化,单帧推理≤15ms;3)零环境依赖,纯C#部署;4)工业级稳定性,7×24小时运行。教程涵盖从环境搭建、模型转换到C#封装的完整流程,特别提供YOLOv8等工业常用模型的TFLi

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1031

Linux系统之SFTP-搭建SFTP服务器

chroot功能允许将用户限制在其自己的目录内,有效防止潜在的越权访问,从而提高了整个系统的安全性。综上所述,SFTP服务的日常维护与性能优化是一个持续的过程,需要管理员具备扎实的专业知识和丰富的实践经验。通过这些精心设计的配置,我们可以确保SFTP服务的安全性和功能性,同时为用户提供一个可靠、高效的文件传输平台。在配置SFTP服务的过程中,创建专门的SFTP用户是一个至关重要的步骤。在配置SFTP服务的过程中,设置正确的目录权限是一项关键步骤,直接影响服务的安全性和功能性。

weixin_43209512的博客 3264

华为OD机试真题 新系统【小学英语老师批改作文】

华为OD机试 新系统真题【小学英语老师批改作文】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【小学英语老师批改作文】

qq_45776114的博客 924

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python FTP与SFTP的IO应用:远程文件传输与管理

FTP(File Transfer Protocol,文件传输协议)和SFTP(SSH File Transfer Protocol,安全文件传输协议)作为经典的文件传输协议,分别以不同的方式实现文件在网络中的传输与管理。在实际开发中,根据项目对安全性和效率的要求,选择合适的协议和库,能够确保远程文件操作的稳定、高效与安全,为数据的存储和共享提供可靠的解决方案。SFTP是一种基于SSH协议的安全文件传输协议,它继承了SSH的加密特性,能够保证数据传输的安全性,避免传输过程中的信息泄露和篡改。

2501_91652317的博客 790

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 如何利用Postfix、Dovecot、MySQL与SpamAssassin配置一套邮件服务器
下一篇: 如何在私有云语境下定义VPC
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值