对于SFTP我们可能看到的不多,FTP是看到比较多的,其实SFTP和FTP都是数据传输的方式。SFTP代表SSH文件传输协议它允许用户通过加密连接向Linux服务器上传和下载文件。FTP传输数据是没有加密的,反之SFTP是加密的,在安全性上SFTP更有优势。

设置SFTP非常简单。我们需要在服务器端安装OpenSSH,在客户端安装SSH包。这里,我们用的是Ubuntu环境,如果我们用CentOS的话命令稍微要改一些。比如 apt或者apt-get 改成 yum。
sudo apt install openssh-server
我们这里还需要在将要访问SFTP服务器的系统上使用SSH。
sudo apt install ssh
完成此操作后,我们还需要对SFTP设置账户信息。
第一、创建账户和目录
创建用户组
sudo groupadd sftpg
让我们创建一个名为”seenisftp”的用户,并将他添加到上面的组中,并给他一个密码。
sudo useradd -g sftpg seenisftp
sudo passwd seenisftp
在useradd命令中,-g 参数是用来告诉组应该添加哪个用户。我们可以列出Linux中的所有用户,并验证新用户是否已添加。让我们创建目录,并按如下方式更改它们的访问和所有权。
sudo mkdir -p /data/seenisftp/upload
sudo chown -R root.sftpg /data/seenisftp
sudo chown -R seenisftp.sftpg /data/seenisftp/upload
第二、设置sshd_config
接下来,我们需要配置ssh服务器,以便每当属于sftpg组的用户登录时,进入sftp,而不是通过ssh获得的正常shell。如果/etc/ssh/sshd_config不存在,则将以下代码段追加到/etc/ssh/sshd_config。
Match Group sftpg
ChrootDirectory /data/%u
ForceCommand internal-sftp
在上面的代码片段中,ChrootDirectory允许将指定的目录作为目录树中的根(“/”目录)节点。登录用户不能看到该目录以上的任何内容。因此,它将阻止当前用户通过sftp访问其他用户的文件。%u是转义码,用于在登录时用当前用户名填充它。当seenisftp通过sftp登录时,他将在/data/seenisftp作为他的根目录。他将无法看到上面的任何东西。
第三、重启生效问题
要使我们对sshd_config所做的更改生效,请按如下方式重新启动服务。
sudo systemctl restart sshd
通过Linux命令行访问SFTP。
sftp seenisftp@banwagongvps.com
SFTP命令示例
SFTP命令通常有以下格式:
COMMAND [SOURCE] [DESTINATION]
SFTP常用实例:
1)连接远程服务器
sftp remote_user@remote_host
2)使用端口进行连接
sftp -P remote_port remote_user@remote_host
3)从远程服务器拉取文件
get /path/remote_file
4)上传本地文件到服务器
put local_file
5)查看远程服务器目录内容
ls
6)查看本地目录内容
lls
7)执行本地 Shell 命令
![command]