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服务_第1张图片](http://img.e-com-net.com/image/info8/976030d6651e43c596d48ee9acfe6742.jpg)
查看是否已安装sftp
在Linux系统中,一般RedHat系统默认已经安装了openssh-client和openssh-server,即默认已经集成了sftp服务,不需要重新安装;而Ubuntu系统默认只安装了openssh-client,要用sftp的话还需要安装openssh-server。如系统已安装有openssh-client,为了防止安装openssh-server时两者版本不兼容,可以先把openssh-client卸载后再安装。查看本系统是否已安装sftp,如下则没有安装:
![Ubuntu安装SFTP服务_第2张图片](http://img.e-com-net.com/image/info8/0f91a5b9d33d4357a4d9822063d12bdc.jpg)
安装openssh-client
一般openssh-client不需要单独安装,安装openssh-server时会默认安装openssh-client。
![Ubuntu安装SFTP服务_第3张图片](http://img.e-com-net.com/image/info8/e23df982694d419694662cfaf9ad4352.jpg)
![Ubuntu安装SFTP服务_第4张图片](http://img.e-com-net.com/image/info8/0c6656dd009a492b937e66af48dc8651.jpg)
安装openssh-server
sudo apt-get install openssh-server
![Ubuntu安装SFTP服务_第5张图片](http://img.e-com-net.com/image/info8/2d19b665deb84f6a875f62dfac5aae86.jpg)
查看安装成功:
![Ubuntu安装SFTP服务_第6张图片](http://img.e-com-net.com/image/info8/d6f15085f2b2439e918464f00f0aff8f.jpg)
新建用户组 sftp-users,并新建用户sftp
为SFTP访问创建用户组,便于管理权限。并创建sftp用户:
sudo addgroup sftp-users
sudo adduser sftp
![Ubuntu安装SFTP服务_第7张图片](http://img.e-com-net.com/image/info8/82ed5aad47a14809a807f92819bfdefb.jpg)
给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
![](http://img.e-com-net.com/image/info8/f6e8a2b558b34204a984246e5b5137f3.jpg)
创建并设置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服务_第8张图片](http://img.e-com-net.com/image/info8/2ace3b81a7144649bd122c5e8a6a5517.jpg)
修改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服务_第11张图片](http://img.e-com-net.com/image/info8/2924e429c3b24ddbb31d9259a231b0fb.jpg)
验证
SFTP客户端验证
在本地Windows系统中可以通过sftp客户端来连接Ubuntu系统的sftp服务,可用WinSCP。
登录
输入Ubuntu系统的IP和sftp用户的密码登录:
![Ubuntu安装SFTP服务_第12张图片](http://img.e-com-net.com/image/info8/3695a4ba5341416c9f2c7941ec0fcf32.png)
![Ubuntu安装SFTP服务_第13张图片](http://img.e-com-net.com/image/info8/1140110d6793450093301a26d4246ec0.png)
登录成功:
![Ubuntu安装SFTP服务_第14张图片](http://img.e-com-net.com/image/info8/cabd58d66f7946088c632c2bffa2b442.jpg)
上传
选择本地文件上传:
选择上传的目录:
![Ubuntu安装SFTP服务_第16张图片](http://img.e-com-net.com/image/info8/fdad608ff8d8457fad0036e757ae3e58.png)
上传成功:
![Ubuntu安装SFTP服务_第17张图片](http://img.e-com-net.com/image/info8/ef85bd821aa047999a1fd24f0cecabb2.jpg)
下载
把刚上传的文件下载到本地任意目录:
![Ubuntu安装SFTP服务_第18张图片](http://img.e-com-net.com/image/info8/a9791678c3ad4d2cacdcf183d4c068ee.jpg)
下载成功:
![](http://img.e-com-net.com/image/info8/77e60729fef84750a985b111029717f3.jpg)
java代码验证
未完。。。。。。
参考:https://www.linuxidc.com/Linux/2016-11/137037.htm