Ubuntu安装SFTP服务

时间:2024-03-26 09:53:44

SFTP介绍

    sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。(来自百度百科)

安装步骤

目标

在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。
以下是将允许sftp-users用户组内的用户使用sftp,但不允许使用SSH Shell,且该组用户不能访问系统文件。在sftp-users组内创建一个用户“sftp”。允许ssh-users用户组内的用户使用sftp以及SSH。系统管理员的账户名为bbc2005。

Ubuntu系统信息

先查看系统版本:

Ubuntu安装SFTP服务

查看是否已安装sftp

在Linux系统中,一般RedHat系统默认已经安装了openssh-client和openssh-server,即默认已经集成了sftp服务,不需要重新安装;而Ubuntu系统默认只安装了openssh-client,要用sftp的话还需要安装openssh-server。如系统已安装有openssh-client,为了防止安装openssh-server时两者版本不兼容,可以先把openssh-client卸载后再安装。查看本系统是否已安装sftp,如下则没有安装:

Ubuntu安装SFTP服务

安装openssh-client

一般openssh-client不需要单独安装,安装openssh-server时会默认安装openssh-client。

Ubuntu安装SFTP服务

Ubuntu安装SFTP服务

安装openssh-server

sudo apt-get install openssh-server

Ubuntu安装SFTP服务

查看安装成功:

Ubuntu安装SFTP服务

新建用户组 sftp-users,并新建用户sftp

为SFTP访问创建用户组,便于管理权限。并创建sftp用户:

sudo addgroup sftp-users
sudo adduser sftp

Ubuntu安装SFTP服务

给sftp赋权并新建用户组ssh-users

将sftp从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问:
sudo usermod -G sftp-users -s /bin/false sftp

创建SSH用户组,并把管理员加入到该组(注意usermod中的-a参数的意思是不从其他用户组用移除)。

sudo addgroup ssh-users
sudo usermod -a -G ssh-users bbc2005

Ubuntu安装SFTP服务

创建并设置sftp用户目录

准备“*”的根目录及共享目录,“*”的根目录必须满足以下要求:
所有者为root,其他任何用户都不能拥有写入权限。
因此,为了让sftp用户能够上传文件,还必须在“*”根目录下再创建一个普通用户能够写入的共享文件目录。
为了便于管理员通过sftp管理上传的文件,把这个共享文件目录配置为:由bbc2005所有,允许sftp-users读写。这样,管理员和sftp用户组成员就都能读写这个目录了。

sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown bbc2005:sftp-users /home/sftp_root/shared

sudo chmod 770 /home/sftp_root/shared

Ubuntu安装SFTP服务

修改SSH配置文件

vi  /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:
AllowGroups ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/sftp_root
AllowTcpForwarding no
X11Forwarding no

ForceCommand internal-sftp

这些内容的意思是:
只允许ssh-uers及sftp-users通过SSH访问系统;
针对sftp-users用户,额外增加一些设置:
将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);
禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP。
如果需要进一步了解细节,可以使用“man sshd_config”命令。这样设置之后,SSH用户组可以访问SSH,并且不受其他限制;而SFTP用户组仅能使用SFTP进行访问,而且被关进*目录。

Ubuntu安装SFTP服务Ubuntu安装SFTP服务

重启

重启系统使配置生效:

Ubuntu安装SFTP服务

验证

SFTP客户端验证

在本地Windows系统中可以通过sftp客户端来连接Ubuntu系统的sftp服务,可用WinSCP

登录

输入Ubuntu系统的IP和sftp用户的密码登录:

Ubuntu安装SFTP服务Ubuntu安装SFTP服务

登录成功:

Ubuntu安装SFTP服务

上传

选择本地文件上传:

Ubuntu安装SFTP服务选择上传的目录:

Ubuntu安装SFTP服务

上传成功:

Ubuntu安装SFTP服务

下载

把刚上传的文件下载到本地任意目录:

Ubuntu安装SFTP服务

下载成功:

Ubuntu安装SFTP服务

java代码验证

未完。。。。。。

参考:https://www.linuxidc.com/Linux/2016-11/137037.htm