@cdmonkey
2017-06-20T18:05:29.000000Z
字数 1812
阅读 1257
命令总结
其是“Secure File Transfer Protocol”的缩写,即安全文件传送协议。能够为传输文件提供一种安全的加密方法。它与传统的FTP
有着几乎相同的语法及功能,为SSH
的组成部分。其实于SSH
软件包中,已经包含了一个叫作“SFTP”的安全文件传输子系统,其本身没有自己的守护进程,它必须使用sshd
守护进程来完成相应的连接操作,因而从某种意义讲其并不像一个服务器程序,而更像是一个客户端程序。
# 直接通过命令行下载FTP服务器上的指定文件:
AC:/home/ac>sftp -oport=8422 sxzf@211.138.236.196:send/20160301.dat
Connecting to 211.138.236.196...
Fetching /send/20160301.dat to 20160301.dat
/send/20160301.dat 100% 11KB 10.9KB/s 00:00
http://my.oschina.net/davehe/blog/100280
http://blog.csdn.net/xinxin19881112/article/details/46831311
http://www.freeoa.net/osuport/sysadmin/use-sftp-instead-ftp-transfer-files_2700.html
http://fromwiz.com/share/s/2knoJe3X04t32rsQ3w3QV2Ha2Vu2oS1HLkwl25IgZZ0Cufpv
http://www.oracleonlinux.cn/2016/11/how_to_config_sftp_on_linux/
搭建“SFTP”服务器要求OpenSSH
的版本必须大于4.8p1
,而低于的该版本的需要进行升级。
[root@test-acftp ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
注意:如果是手动对OpenSSH
进行过升级的话,需要按下面的配置开启sftp
功能:
Subsystem sftp /usr/local/openssh/libexec/sftp-server
# Create sftp group:
[root@test-acftp ~]# groupadd sftp
创建一个“SFTP”用户:
[root@test-acftp ~]# useradd -g sftp -s /bin/false acftp
[root@test-acftp ~]# passwd acftp # Password:suixingpay
指定家目录:
[root@test-acftp ~]# usermod -d /home/ftp/CBEC acftp
[root@test-acftp ~]# vim /etc/ssh/sshd_config
# Comment out this line (Usually located at the end of the file):
# Subsystem sftp /usr/libexec/openssh/sftp-server
# Add the following at the end of the file:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /home/ftp/CBEC
ForceCommand internal-sftp
AllowTcpForwarding no
设定“Chroot”目录权限
http://zengrong.net/post/1616.htm
重启服务:
[root@test-acftp ~]# /etc/init.d/sshd restart
问题处理:
如果你链接服务器的时候出现下面的提示:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。
免密钥登录最为靠谱的设定:
http://jingyan.baidu.com/article/e5c39bf56245ae39d7603331.html