SFTP配置

SFTP使用场景

ftp是大多数网站的文件传输选择工具,但ftp并不是非常安全,并且在centos上搭建的vsftpd也非常的不稳定,偶尔会出现权限问题,例如500、或是账号密码不正确等等。

而SFTP是基于默认的22端口,是ssh内含的协议,只要启动了sshd就可以使用。

建议:更高的效率使用FTP协议,更安全的通信使用SFTP协议。

FTP是一种文件传输协议,一般是为了方便数据共享的。包括一个FTP服务器和多个FTP客户端。FTP客户端通过FTP协议在服务器上下载资源。而SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。但是这种安全是以牺牲效率为代价的,也就是说SFTP的传输效率比FTP要低(不过现实使用当中,没有发现多大差别)。个人肤浅的认为就是:

FTP要安装,SFTP不要安装。 
SFTP更安全,但更安全带来副作用就是的效率比FTP要低些。

 

用法

 
  1. sftp:/root> help
  2. bye finish your SFTP session
  3. 退出sftp
  4. cd change your remote workingdirectory
  5. 更改远程服务器工作目录
  6. clear clear screen
  7. 清屏
  8. exit finish your SFTP session
  9. explore explore your local directory
  10. 导入本地目录
  11. get download a file from theserver to your local machine
  12. 从远程服务器上下载文件到本机
  13. help give help
  14. 查找帮助
  15. lcd change and/or print localworking directory
  16. 切换本地当前工作目录
  17. lls list contents of a localdirectory
  18. 列出本地当前目录的内容
  19. lpwd print your local workingdirectory
  20. 打印当前工作目录
  21. ls list contents of a remotedirectory
  22. 列出远程服务器目录内容
  23. mkdir create a directory on theremote server
  24. 在远程服务器上创建一个目录
  25. mv move or rename a file onthe remote server
  26. 搬移或重命名一个的远程服务器文件
  27. put upload a file from yourlocal machine to the server
  28. 将本机的文件上传到远程服务器
  29. pwd print your remote workingdirectory
  30. 打印远程服务器工作路径
  31. quit finish your SFTP session
  32. 退出
  33. rename move or rename a file onthe remote server
  34. 搬移或重命名一个的远程服务器文件
  35. rm delete a file
  36. 删除一个文件
  37. rmdir remove a directory on theremote server
  38. 在远程服务器上删除一个目录删除一个目录
  39. 2、常用的为上传下载
  40. 1)、get
  41. 从远程服务器上下载一个文件存放到本地,如下:
  42. 先通过lcd切换到本地那个目录下,然后通过get file
  43. >> lcd d:\ #表示切换到本地的d盘下
  44. >> get ./test.sql   #这样就将当前文件下载本地的d盘下
  45. 2)、put
  46. 是将本地的文件上传到远程服务器上,如下:
  47. >> put #在windows下弹出选择文件的窗口
  48. 3)、lcd
  49. 先通过lcd切换到本地那个目录下
  50. >> lcd c:\ #表示切换到本地的c盘下
  51. 4)、lls
  52. #显示当前目录下的所有文件
  53. 5)、pwd
  54. #显示当前目录
 

centos7搭建SFTP

 

创建sftp组

groupadd sftp

cat /etc/group

 

创建一个sftp用户mysftp并加入到创建的sftp组中,同时修改mysftp用户的密码

useradd -g sftp -s /bin/false mysftp

passwd mysftp

 

新建目录,指定为mysftp用户的主目录

mkdir -p /sftp/mysftp

usermod -d /sftp/mysftp mysftp

 

编辑配置文件/etc/ssh/sshd_config

vim /etc/ssh/sshd_config

 
  1. # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. 将如下这行用#符号注释掉
 

并在文件最后面添加如下几行内容然后保存(最好放在文件末尾)

 
  1. Subsystem sftp internal-sftp
  2. Match Group sftp
  3. ChrootDirectory /sftp/%u
  4. ForceCommand internal-sftp
  5. AllowTcpForwarding no
  6. X11Forwarding no

 
  1. Subsystem sftp internal-sftp #这行指定使用sftp服务使用系统自带的internal-sftp
  2. Match User sftpuser #这行用来匹配用户
  3. ChrootDirectory /datas/www #用chroot将用户的根目录指定到/datas/www ,这样用户就只能在/datas/www下活动
  4. AllowTcpForwarding no
  5. ForceCommand internal-sftp #指定sftp命令
 

设置Chroot目录权限

chown root:sftp /sftp/mysftp 
文件夹所有者必须为root,用户组可以不是root

chmod 755 /sftp/mysftp 
权限不能超过755,否则会导致登录报错,可以是755

 

新建一个目录供stp用户mysftp上传文件,这个目录所有者为mysftp所有组为sftp,所有者有写入权限所有组无写入权限

mkdir /sftp/mysftp/upload

chown mysftp:sftp /sftp/mysftp/upload

chmod 755 /sftp/mysftp/upload

 

关闭selinux并重启sshd服务,然后测试

setenforce 0

service sshd restart

 

在其他服务器上进行验证,sftp 用户名@ip地址

sftp mysftp@x.x.x.x

posted @ 2020-08-05 10:29  L1n  阅读(821)  评论(0编辑  收藏  举报