linux 开发中的协议栈(linuxubuntugnu下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。
二、开启SFTP开启命令:
1 /etc/init.d/sshd start 2 /etc/init.d/sshd stop
第二种方式启动服务
1) 查看ssh版本
sftp是基于ssh协议的子协议,首先查看ssh版本,openssh -server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成
[root@izys605x4c311swvscc1y0z ~]# ssh -VOpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 201312
2) 创建用户和组将用户的shell
设置为/bin/false使他没有登陆shell的权限
useradd sftp -s /bin/false 1
3) 给Home目录更改属主并授权
家目录必须是root,权限可以是755或者750
chown root:sftp testsftpchmod 700 -R testsftp12
4) 编辑配置文件/etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉这行Subsystem sftp internal-sftp #增加以下6行 Match Group sftp ChrootDirectory /%u #设定属于用户组sftp的用户访问的根文件夹 ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no #设置不允许SSH的X转发#UseDNS no #注释掉#AddressFamily inet #注释掉#SyslogFacility AUTHPRIV #注释掉 1234567891011
5) 重启sshd服务
[root@izys605x4c311swvscc1y0z ~]# systemctl restart sshd[root@izys605x4c311swvscc1y0z ~]# systemctl status sshd | grep Active Active: active (running) since Sun 2018-02-11 18:00:13 CST; 7s ago123
6) 验证是否生效在另一台客户机上,使用sftp 用户@IP进行连接
[root@izys605x4c311ss06lb63lz ~]# sftp root@192.168.2.183root@192.168.2.183's password: Connected to 192.168.2.183. sftp> ls testsftp 12345
常见问题: 如果你链接服务器的时候出现下面的提示: Write failed: Broken pipe Couldn’t read packet: Connection reset by peer 这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。
连接方式Linux sftp 安全文件传输命令
常用登陆方式
格式:sftp [user]@[host]
通过sftp连接[host],端口为默认的22,指定用户[user]。
查看sftp支持的命令
sftp>help
基本的使用
sftp> ls #list directory
sftp> pwd #print working directory on remote host
sftp> lpwd #print working directory on local host
sftp> mkdir uploads #create a new directory
如何使用 sFTP 上传文件夹
要将整个目录上传到远程 Linux 主机中,请使用put命令。但是,如果目录名称不存在于远程主机上的工作目录中,你将收到错误,如下面的屏幕截图所示。
因此,首先在远程主机上创建一个具有相同名称的目录,然后从本地主机上传它,-r参数允许拷贝子目录和子文件:
sftp> put -r Tecmint.com-articles
sftp> mkdir Tecmint.com-articles
sftp> put -r Tecmint.com-articles
要保留修改时间、访问时间以及被传输的文件的模式,请使用-p标志。
sftp> put -pr Tecmint.com-articles如何使用 sFTP 下载文件夹
要从远程 Linux 主机下载整个 fstools-0.0 文件夹到本机中,如下所示使用 get 命令带上-r标志:
sftp> get -r fstools-0.0
使用 sFTP 下载目录
如果文件夹已经下载完成了,接着查看本机的工作目录。
要退出 sFTP shell,输入:
sftp> bye或者sftp> exit
要将整个目录上传到远程 Linux 主机中,请使用 put
命令。但是,如果目录名称不存在于远程主机上的工作目录中,你将收到错误,如下面的屏幕截图所示。
因此,首先在远程主机上创建一个具有相同名称的目录,然后从本地主机上传它,-r
参数允许拷贝子目录和子文件:
sftp> put -r Tecmint.com-articlessftp> mkdir Tecmint.com-articlessftp> put -r Tecmint.com-articles
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com