sftp ubuntu环境实际操作总结

概念比较

sftp和ftp的区别有三点:

1.连接方式:sftp是在客户端和服务器之间通过SSH协议建立的安全连接来传输文件,而ftp则是tcp端口21上的控制连接建立连接。

2.安全性:SFTP使用加密传输认证信息来传输数据,因此SFTP相对于FTP更安全的。

3.效率:SFTP因使用加密解密技术,所以效率比FTP低。

sftp是一种数据流连接,提供文件访问、传输、管理功能的网络传输协议,在计算机领域中它称为 SSH文件传输协议,英文是SSH File Transfer Protocol或Secret File Transfer Protocol,中文名字叫安全文件传送协议。

ftp的英文名是 File Transfer Protocol,中文称为文件传输协议,是一套用于网络文件传输的标准协议,它工作在osi模型的第七层,tcp模型的第四层,保证客户与服务器之间的连接是可靠的,并且,ftp允许用户以文件操作的方式与另一主机互相通信。FTP传输模式分为主动模式和被动模式,它凭借自身独特的优势一直都是因特网中最重要、最广泛的服务之一

ubuntu18 sftp服务器搭建

SFTP(SSH File Transfer Protocol)是一个比普通FTP更为安全的文件传输协议。它工作在SSH 上,确保文件被加密传输。默认使用端口是 22.

SFTP 常用客户端软件推荐使用 FileZilla,下载链接如下:

客户端 - FileZilla中文网

FileZilla 客户端配置步骤:

打开 FileZilla --> 文件 --> 站点管理 --> 新站点 --> 常规 --> 协议选择 SFTP --> 填写主机 IP,用户名,密码 --> 连接

二、需求描述

1. 两类 SFTP 用户,给这两类用户分为两个用户组,分别命名为 sftp_root 和 sftp_read

2. sftp_root 用户组可以对 SFTP 指定目录拥有所有权限(读,增,删,改)

3. sftp_read 用户组只有可读权限,不允许删除,上传操作,只允许下载操作

三、在 Ubuntu 服务器上 搭建 SFTP 服务端

在 SFTP 搭建的过程中,遇到了一个客户端连不上服务端的问题。根本原因是忽略了 SFTP “监狱”根目录,导致每次都被拒绝链接。

“监狱”的根目录必须满足如下要求:所有者为root,其他任何用户都不能拥有写入权限。

“监狱”根目录下需要创建 SFTP 共享目录,该共享目录才是 SFTP 用户可以维护的目录,“监狱”根目录只能ssh等登录ubuntu服务器后用root用户维护。

以下步骤都是在 Ubuntu 服务器的终端中输入命令。

1. 安装OpenSSH服务器

sudo apt-get install openssh-server

2. 创建 sftp_root 和 sftp_read 用户组

sudo addgroup sftp_root

sudo addgroup sftp_read

3. 创建使用 SFTP 的用户,如果已经有已存在用户了,也可以跳过改步骤

sudo adduser test_read_user1

sudo adduser test_read_user2

...

sudo adduser test_root_user1

sudo adduser test_root_user2

...

4. 将不同类别用户添加到对应的用户组

将 test_read_user1,test_read_user2 添加到 sftp_read 用户组,并从所有其他用户组中移除,同时关闭其Shell访问

sudo usermod -G sftp_read -s /bin/false test_read_user1

sudo usermod -G sftp_read -s /bin/false test_read_user2

sudo usermod -a -G sftp_read test_root_user1

sudo usermod -a -G sftp_read test_root_user2

将 test_root_user1,test_root_user2 添加到 sftp_root 用户组,但不从其他用户组用移除(当然,也可以像 test_read_user1 一样,同时关闭其Shell访问,但不要从所有其他用户组中移除)

sudo usermod -a -G sftp_root test_root_user1

sudo usermod -a -G sftp_root test_root_user2

以下步骤在自己没有搞清楚原理前,请务必按照下面的步骤严格执行,不要有漏掉的,避免将来访问权限不对,造成困惑。

5. 创建“监狱”根目录和 SFTP 共享目录并修改用户和权限

以要共享 share1 和 share2 两个目录为例:

sudo mkdir /data/testSFTP

sudo mkdir /data/testSFTP/share1

sudo mkdir /data/testSFTP/share2

sudo chown root:sftp_read /data/testSFTP

sudo chmod 755 /data/testSFTP

sudo chown root:sftp_root /data/testSFTP/share1

sudo chown root:sftp_root /data/testSFTP/share2

sudo chmod 775 /data/testSFTP/share1

sudo chmod 775 /data/testSFTP/share2

6. 修改 SSH 配置文件

sudo vim /etc/ssh/sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server

Subsystem sftp internal-sftp

AllowGroups sftp_root sftp_read root

Match Group sftp_read

AllowTcpForwarding no

X11Forwarding no

ForceCommand internal-sftp

ChrootDirectory /data/testSFTP

相关配置解释如下:

(1)添加 sftp 子系统,SFTP 根目录会根据下面的 Match 进行匹配,如果没有匹配到而且还在 AllowGroups 的用户组,那么 SFTP 根目录会是用户根目录,比如,/home/test_read_user1/

(2)允许 sftp_root sftp_read root 用户组通过 SFTP 访问 SFTP 服务器

(3)置 Match 的用户组 sftp_read,只要在该用户组的用户,都要满足 Match 下的限制条件

(4)禁止TCP Forwarding和X11 Forwarding;

强制该组用户仅仅使用SFTP;

该用户组根目录为 /data/testSFTP

7. 重启 ssh 服务

sudo service ssh restart

备注:如果您的网络没有硬件防火墙,也没有设置ubuntu软件防火墙(默认关闭的),那么理论上上讲,可以通过 FileZilla 成功访问该 SFTP 服务器了。

8、补充 删除用户命令

userdel 命令功能很简单,就是删除用户的相关数据。此命令只有 root 用户才能使用。

我们知道,用户的相关数据包含如下几项:

  • 用户基本信息:存储在 /etc/passwd 文件中;

  • 用户密码信息:存储在 /etc/shadow 文件中;

  • 用户群组基本信息:存储在 /etc/group 文件中;

  • 用户群组信息信息:存储在 /etc/gshadow 文件中;

  • 用户个人文件:主目录默认位于 /home/用户名,邮箱位于 /var/spool/mail/用户名。

其实,userdel 命令的作用就是从以上文件中,删除与指定用户有关的数据信息。

userdel 命令的语法很简单,基本格式如下:

[root@localhost ~]# userdel -r 用户名

-r 选项表示在删除用户的同时删除用户的家目录。

注意,在删除用户的同时如果不删除用户的家目录,那么家目录就会变成没有属主和属组的目录,也就是垃圾文件。

例如,删除前面章节中创建的 lamp 用户,只需执行如下命令:

[root@localhost ~]# userdel -r lamp

除了使用 userdel 命令删除用户,还可以手动方式删除,毕竟通过前面的学习,我们已经知道与用户相关信息的存储位置。虽然这样做没有实际意义,但对于初学者来说,可以加深对 userdel 命令的理解。

手动删除指定用户的具体操作如下:

#建立新 lamp 用户

[root@localhost ~]# useradd lamp

[root@localhost ~]# passwd lamp

#为 lamp 用户设置密码,由此 lamp 用户才算是创建成功

#下面开始手动删除 lamp

[root@localhost ~]# vi /etc/passwd

lamp:x:501:501::/home/lamp:/bin/bash <--删除此行

#修改用户信息文件,删除lamp用户行

[root@localhost ~]#vi /etc/shadow

lamp:$6$KoOYtcOJ $56Xk9vp3D2vMRBxibNOn.21cVJ9onbW8IHx4WrOx6qBqfGa9U3mjMsGjqYnj L/4t3zt3YxElce2X8rbb12x4a0:15716:0:99999:7::: <--删除此行

#修改影子文件,删除lamp用户密码行,注意,这个文件的权限是000,所以要强制保存

[root@localhost ~]#vi /etc/group

lamp:x:501: <--删除此行

#修改组信息文件,删除lamp群组信息

[root@localhost ~]#vi /etc/gshadow

lamp:!:: <--删除此行

#修改组影子文件,删除lamp群组密码信息。同样注意需要强制保存

[root@localhost ~]# rm -rf /var/spod/mail/lamp #删除用户邮箱

[root@localhost ~]# rm -rf/home/lamp/ #删除用户的家目录

#至此,用户彻底删除,再新建用户lamp。如果可以正常建立,则说明我们手工删除干净了

[root@localhost ~]# useradd lamp

[root@localhost ~]# passwd lamp

#重新建立同名用户,没有报错,说明前面的手工删除是可以完全删除用户的

手动删除用户,仅是为了让读者对 userdel 命令理解地更透彻,实际使用中,使用 userdel 删除用户更方便。

最后需要大家注意的是,如果要删除的用户已经使用过系统一段时间,那么此用户可能在系统中留有其他文件,因此,如果我们想要从系统中彻底的删除某个用户,最好在使用 userdel 命令之前,先通过 find -user 用户名 命令查出系统中属于该用户的文件,然后在加以删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
什么是 WinSCP? WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。 WinSCP 中文绿色版WinSCP 中文绿色版 WinSCP 主要功能: 图形用户界面 多语言 与 Windows 完美集成(拖拽, URL, 快捷方式) 支持所有常用文件操作 支持基于 SSH-1、SSH-2 的 SFTP 和 SCP 协议 支持批处理脚本和命令行方式 多种半自动、自动的目录同步方式 内置文本编辑器 支持 SSH 密码、键盘交互、公钥和 Kerberos(GSS) 验证 通过与 Pageant(PuTTY Agent)集成支持各种类型公钥验证 提供 Windows Explorer 与 Norton Commander 界面 可选地存储会话信息 可将设置存在配置文件中而非注册表中,适合在移动介质上操作 WinSCP 中文绿色版WinSCP 中文绿色版 文件操作 WinSCP 可以执行所有基本的文件操作,例如下载和上传。同时允许为文件和目录重命名、改变属性、建立符号链接和快捷方式。 两种可选界面允许用户管理远程或本地的文件。 连接到远程计算机 使用 WinSCP 可以连接到一台提供 SFTP (SSH File Transfer Protocol)或 SCP (Secure Copy Protocol)服务的 SSH (Secure Shell)服务器,通常是 UNIX 服务器SFTP 包含于 SSH-2 包中,SCP 在 SSH-1 包中。两种协议都能运行在以后的 SSH 版本之上。WinSCP 同时支持 SSH-1 和 SSH-2。 但WinSCP不支持编码选择,也就是说,你在Windows下使用WinSCP连接一个Linux机器,因为Linux和Windows的默认编码不同,因此是无法访问上面的中文文件或者文件夹的(将看到乱码)。一种解决方法就是在打开winscp时登录中的 Advanced Options–Environment中将 “UTF-8 encoding for filenames”设为on. 如果您是第一次使用 WinSCP,建议选择 Windows Explorer 界面,因为 Windows 用户比较熟悉这个界面。当然,如果您习惯 Norton Commander 风格,就选择 Norton Commander 界面,它注重于方便的键盘操作,你完全可以脱离鼠标,更快地进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值